Selenium 4.2.0 标签定位8种方法

这篇具有很好参考价值的文章主要介绍了Selenium 4.2.0 标签定位8种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

Selenium4使用find_element(by=By.**, value=*)来替换了原来的find_element_by_* 的方法,使用find_elements(by=By.*, value=*)来替换了原来的find_elements_by_* 的方法。

By类定义在 site-packages\selenium\webdriver\common\by.py中:

Selenium 4.2.0 标签定位8种方法
这就是Selenium4的8种定位方法

元素定位

元素本身是什么:HTML静态页面中的的一个标签
元素定位一般而言是基于元素自身所包含有的特点来进行定位的。
包括:标签的名称(决定元素是什么)、标签的属性(决定元素有什么特质),标签的文本

定位元素的方法

ID = “id”
XPATH = “xpath”
LINK_TEXT = “link text”
PARTIAL_LINK_TEXT = “partial link text”
NAME = “name”
TAG_NAME = “tag name”
CLASS_NAME = “class name”
CSS_SELECTOR = “css selector”

  • id:有ID就用ID定位,基本不会重复
  • name:有name可以考虑用,name类似于人的名字,虽然相对少见的值,但是容易重名
  • link text:基于文本定位链接标签
  • partial link text:类似于SQL中的like%,模糊查找
  • tag name:基于标签名称来查找元素,大概率有多个结果,一般用于查找多个重复的内容的时候使用。
  • class:基于class属性进行元素查找,非必要不推荐,重复率高
  • css selector:定位界万金油,有自己的独特语法,定位语法麻烦,基于标签的class内容进行定位,使用copy
    selector确定位置

Selenium 4.2.0 标签定位8种方法

  • xpath:定位界万金油,有自己的独特语法,定位速度慢,基于树状结构形态定位,使用Copy XPath, Copy full
    XPath来确定位置

Selenium 4.2.0 标签定位8种方法

总结:有id用id,没id用name,都不行用css/xpath,链接可以用link text。find_element元素定位如果同时有多个结果,默认返回定位的第一个结果;find_elements元素定位返回一个列表

实例

测试目的

测试Selenium4的8种元素定位方法

ID、CSS_SELECTOR

输入栏输入yoga,点击搜索
Selenium 4.2.0 标签定位8种方法

实例网站

京东
Selenium 4.2.0 标签定位8种方法

实例代码
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service


service = Service(executable_path=r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.get(url="https://www.jd.com/")

# id
driver.find_element(by=By.ID,value="key").send_keys("yoga")

# css selector
driver.find_element(by=By.CSS_SELECTOR,value="#search > div > div.form > button").click()

time.sleep(3)
driver.quit()
结果展示

Selenium 4.2.0 标签定位8种方法

NAME、LINK_TEXT、PARTIAL_LINK_TEXT

用NAME元素输入yoga,用LINK_TEXT定位how123,用PARTIAL_LINK_TEXT定位hao123
Selenium 4.2.0 标签定位8种方法

实例网站

百度一下

实例代码
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service


service = Service(executable_path=r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.get(url="https://www.baidu.com/")

# id
driver.find_element(by=By.NAME,value="wd").send_keys("yoga")
time.sleep(3)
driver.get(url="https://www.baidu.com/")

# link text
driver.find_element(by=By.LINK_TEXT,value="hao123").click()
time.sleep(3)

# css selector
driver.get(url="https://www.baidu.com/")
driver.find_element(by=By.PARTIAL_LINK_TEXT,value="1").click()

time.sleep(3)
driver.quit()
结果展示

Selenium 4.2.0 标签定位8种方法

CSS、XPATH

点击热搜第一

实例网站

微博热搜

实例代码
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service


service = Service(executable_path=r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.get(url="https://weibo.com/newlogin?tabtype=search&openLoginLayer=0&url=")

time.sleep(6) # Redirect
# css selector
driver.find_element(by=By.CSS_SELECTOR,value="#scroller > div.vue-recycle-scroller__item-wrapper > div:nth-child(2) > div > div > a > div > div > div.woo-box-item-flex").click()
time.sleep(3)

# xpath
driver.get(url="https://weibo.com/newlogin?tabtype=search&openLoginLayer=0&url=")
time.sleep(6)
driver.find_element(by=By.XPATH,value='//*[@id="scroller"]/div[1]/div[2]/div/div/a/div/div/div[1]').click()

time.sleep(3)
driver.quit()
结果展示

CSDN判定图片违规,无法上传

TAG_NAME、CLASS

去除首页作弊通知弹窗
Selenium 4.2.0 标签定位8种方法

实例平台

豆豆玩

实例代码
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service


service = Service(executable_path=r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.get(url="http://doudouwan.com/")


# tag name
el = driver.find_elements(by=By.TAG_NAME,value="a")[83]
# el2 = driver.find_elements(by=By.CLASS_NAME,value='layui-layer-btn0')[0]
# for i in range(len(el)):
#     if el[i] == el2:
#         print(i)
time.sleep(3)

# delete all cookies in this website, and do not need to refresh driver
driver.delete_all_cookies()

# xpath
driver.get(url="http://doudouwan.com/")
time.sleep(6)
driver.find_elements(by=By.CLASS_NAME,value='layui-layer-btn0')[0].click()

time.sleep(3)
driver.quit()
结果展示

Selenium 4.2.0 标签定位8种方法文章来源地址https://www.toymoban.com/news/detail-403175.html

到了这里,关于Selenium 4.2.0 标签定位8种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 013-Python3.11.8+selenium4.18.1+Web元素定位大法

    2024现烤现卖热乎的自动化测试之《元素定位大法》最新版本教程 环境配置:         Python版本:Python3.11.8         Selenium版本:Selenium4.18.1         Firfox版本:123.0.1(64位)

    2024年03月20日
    浏览(40)
  • Selenium4+python被单独定义<div>的动态输入框和二级下拉框要怎么定位?

    今天在做练习题的时候,发现几个问题捣鼓了好久,写下这篇来记录   对于这种拥有二级框的选项无法定位,也不是select属性. 我们查看下HTML,发现它是被单独封装在body内拥有动态属性的独立div,当窗口点击的时候才会触发.     这个日历和上一个问题一样,也是被单独封装在最后的

    2024年02月05日
    浏览(32)
  • 关于Python中使用selenium八大定位方法

    1.通过id元素定位                             .find_element_by_id(\\\"id\\\") 2.通过name元素定位                       .find_element_by_name(\\\"name\\\")     3.通过路径导航定位                         .find_element_by_xpath(\\\"xpath\\\")          说明 :右键所选的网页元素,点击copy,点击copy ,x

    2023年04月23日
    浏览(36)
  • selenium4.3.0模块中的find_element_by_id方法无法使用,改用driver.find_element(by=By.ID, value=None)

    在selenium最新版本4.3.0中, 使用之前的find_element_by_id会报错 Ctrl+点击find_element,查看代码 最新版本,改为了driver.find_element(By.ID, ‘foo’) 在自己的代码中修改,发现By会被pycharm下划线提示报错,再次查看代码 发现需要import By 再次修改自己的代码,运行通过

    2024年02月13日
    浏览(34)
  • 【Python爬虫】selenium4新版本使用指南

    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括 IE(7, 8, 9, 10, 11) , Mozilla Firefox , Safari , Google Chrome , Opera , Edge 等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能

    2024年02月06日
    浏览(36)
  • python爬虫之selenium4使用(万字讲解)

    声明以下的例子,只是来作为测试学习,并不作为真正的爬虫 我们在浏览一些网站时,有不少内容是通过 JavaScript动态渲染的,或是 AJAX 请求后端加载数据,这其中涉及到了不少加密参数如 token,sign,难以找规律,较为复杂。像前面的百度贴吧的一个评论的回复,百度翻译等

    2024年04月10日
    浏览(44)
  • 使用Selenium对网页元素进行定位的诸种方法!

    使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接。 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了,下面我们来了解一下如何在查找元素。 在上一篇的示例中,我们就演示了如何通过find_element_by_

    2024年04月10日
    浏览(35)
  • 关于selenium4.0版本在springboot中的使用问题

    年底不是紧张的日子,想着写一个程序来进行订饭,首先想到了用selenium来进行开发,但是在开发的过程中遇到了问题。 添加上了jar包,写好了代码就测试时发现出现了异常。 java.lang.NoClassDefFoundError: org/openqa/selenium/internal/Require  Caused by: java.lang.ClassNotFoundException: org.openqa.s

    2024年02月05日
    浏览(28)
  • selenium定位非select标签的下拉框(div/ul/li)

    1.定位下拉框,如果开发者选项是select标签的,我们一般会使用以下方法进行定位:  2.针对不是select属性的下拉框,如果再使用以上方法进行定位并选择可选项,就会报错,例如下拉框是在div标签,div标签下有ul,ul下有li可选项,这时候再使用1中的方法进行定位并选择,就

    2024年02月11日
    浏览(34)
  • 【selenium】自动化测试中,元素无法点击定位等问题的解决:js的使用方法

    在自动化测试中经常会遇到使用selenium方法定位元素点击操作失败的情况,例如,我们想实现在浏览器输入http://www.baidu.com,进入百度首页后,鼠标悬停在“更多产品”上,点击“全部产品” 若不使用js的话,代码应该如下图所示: 我们执行代码后,发现会报错 我们该如何解

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包