尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

`from selenium.webdriver.common.by import By`是Selenium自动化测试中导入元素定位工具类的固定语句

`from selenium.webdriver.common.by import By`是Selenium自动化测试中导入元素定位工具类的固定语句 一、By类的基础定义与作用核心定位功能载体from selenium.webdriver.common.by import By是Selenium自动化测试中导入元素定位工具类的固定语句By类是Selenium中用于指定元素定位方式的抽象类一共包含8种元素定位实现子类对应8种主流的Web页面元素定位方法。Selenium 4及以上版本强制要求使用find_element(By.定位方式, 定位值)的形式完成元素查找不再支持旧版本find_element_by_*的直接调用写法。常用定位方式说明| 定位方式 | 适用场景与特点 ||------------------------|------------------------------------------------------------------------------||By.ID| 通过元素的id属性定位id属性在HTML页面中通常唯一是定位精度最高的方式例如定位百度新闻页面分类标题可使用driver.find_element(By.ID, headrapper)获取元素后调用.text属性获取文本内容。 ||By.NAME| 通过元素的name属性定位适合表单、输入框类元素的查找。 ||By.CLASS_NAME| 通过元素的class属性定位适合查找具备统一样式的元素该方式可能匹配到多个元素默认返回第一个匹配结果例如获取豆瓣电影评论文本可使用driver.find_element(By.CLASS_NAME, short)。 ||By.LINK_TEXT| 用于精确匹配超链接的全部文本内容定位元素。 ||By.PARTIAL_LINK_TEXT| 用于模糊匹配超链接的部分文本内容定位元素。 ||By.TAG_NAME| 通过HTML标签名定位适合页面中同类标签数量少的场景通常用于批量获取一组元素例如driver.find_elements(By.TAG_NAME, input)可获取页面所有输入框通过下标选择目标元素后执行输入等操作。 ||By.XPATH| 基于XML路径语言定位支持复杂路径、条件匹配的元素查找。 ||By.CSS_SELECTOR| 通过CSS选择器定位定位效率高于XPATH可通过浏览器开发者工具复制元素的selector直接使用例如百度搜索框的CSS选择器为#kw。 |二、使用示例以携程机票出发城市输入框操作为例完整用法如下fromseleniumimportwebdriverfromselenium.webdriver.common.byimportBy# 初始化浏览器驱动driverwebdriver.Chrome()# 打开携程页面driver.get(携程机票页URL)# 通过ID定位出发城市输入框start_city_inputdriver.find_element(By.ID,fd_star_city)# 操作元素点击、清空、输入内容start_city_input.click()start_city_input.clear()start_city_input.send_keys(北京)总结from selenium.webdriver.common.by import By是Selenium元素定位的基础导入语句By类封装了8种元素定位方式适配不同的页面场景优先选择ID实现精准唯一匹配表单场景可使用NAME定位统一样式元素选择CLASS_NAME批量同类元素使用TAG_NAME复杂结构元素可结合XPATH或CSS_SELECTOR定位。Selenium 4版本必须通过find_element(By.xxx, 定位值)的形式调用定位方法使用时可结合浏览器开发者工具快速获取元素的定位属性值提升脚本编写效率。By类作为Selenium中指定元素定位方式的核心工具类一共包含8种定位方式不同方式对应不同的适用场景一、基础属性类定位ID定位By.ID通过元素的id属性定位元素id属性在HTML页面中通常唯一是定位精度最高的方式。比如百度搜索框的id为kw可通过driver.find_element(By.ID, kw)完成定位。NAME定位By.NAME通过元素的name属性定位适合表单、输入框类元素的查找。如果元素没有id属性但name属性唯一时可使用该方式比如百度搜索框的name为wd对应写法为driver.find_element(By.NAME, wd)。CLASS_NAME定位By.CLASS_NAME通过元素的class属性定位适合查找具备统一样式的元素该方式可能匹配到多个元素默认返回第一个匹配结果。比如豆瓣电影评论文本的class为short可通过driver.find_element(By.CLASS_NAME, short)获取评论内容注意该方式不允许使用复合类名。TAG_NAME定位By.TAG_NAME通过HTML标签名定位适合页面中同类标签数量少的场景通常用于批量获取一组元素。比如页面中存在多个input标签时可通过driver.find_elements(By.TAG_NAME, input)获取所有输入框再通过下标选择目标元素执行操作。二、超链接类定位LINK_TEXT定位By.LINK_TEXT用于精确匹配超链接的全部文本内容定位元素仅针对a标签生效。比如百度首页的“新闻”超链接可通过driver.find_element(By.LINK_TEXT, 新闻)定位。PARTIAL_LINK_TEXT定位By.PARTIAL_LINK_TEXT用于模糊匹配超链接的部分文本内容定位元素如果匹配到多个元素则默认返回第一个。比如“新闻”链接可通过driver.find_element(By.PARTIAL_LINK_TEXT, 新)完成匹配。三、复杂路径类定位XPATH定位By.XPATH基于XML路径语言定位支持层级匹配、多属性组合匹配等复杂场景灵活性最高。比如百度搜索框可通过driver.find_element(By.XPATH, //input[idkw and namewd])定位。CSS_SELECTOR定位By.CSS_SELECTOR通过CSS选择器定位定位效率高于XPATH可通过浏览器开发者工具复制元素的selector直接使用。比如百度搜索框的CSS选择器为#kw对应写法为driver.find_element(By.CSS_SELECTOR, #kw)。总结By类的8种定位方式可根据场景灵活选择优先使用ID实现最高精度的唯一匹配表单场景可选择NAME定位统一样式元素选择CLASS_NAME批量同类元素使用TAG_NAME超链接元素根据匹配精度选择LINK_TEXT或PARTIAL_LINK_TEXT复杂结构元素可结合XPATH的灵活性或CSS_SELECTOR的高效性完成定位。Selenium 4及以上版本需使用find_element(By.定位方式, 定位值)的统一写法不再支持旧版本find_element_by_*的单独调用。
返回列表