ui自动化之selenium操作(三)xpath定位
xpath 的定位方法,非常强大.使用这种方法几乎可以定位到页面上的任意元素。
1. 什么是xpath?
xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。
2. xpath的缺点
xpath 这种定位方式,webdriver会将整个页面的所有元素进行扫描以定位我们所需要的元素,这是个非常费时的操作,如果脚本中大量使用xpath做元素定位的话,脚本的执行速度可能会稍慢;
3. 绝对路径定位
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="div1"> <input name="div1input"/> <a href="http://www.sogou.com">搜狗搜索</a> <img alt="div1-img1" src="http://www.sogou.com/images/logo/new/sogou.png" href="http://www.sogou.com">搜狗图片</img> <input type="button" value="查询"/> </div> <br /> <div name="div2"> <input name="div2iniput"/> <a href="http://www.baidu.com">百度搜索</a> <img alt="div2-img2" src="http://www.baidu.com/img/bdlogo.png" href="http:/www.baidu.com">百度图片</img> </div> </body> </html>
以上面的test.html举例,想要定位到查询按钮,则用绝对路径定位就是:
1 | browser.find_element_by_xpath( "/html/body/div/input[@value='查询']" ) |
这样定位的缺点就是:
一旦页面结构发生改变,改路径也随之失效,必须重新。 所以不推荐使用绝对路径的写法;
4. 相对路径定位
相对路径定位:
1 | browser.find_element_by_xpath( "//input[@value='查询']" ) |
5. 绝对路径和相对路径的区别
绝对路径 以 "/" 开头, 让xpath 从文档的根节点开始解析;
相对路径 以"//" 开头, 让xpath 从文档的任何元素节点开始解析;
6. 使用索引号定位
1 | browser.find_element_by_xpath( "//input[2]" ) |
7. 利用元素属性定位
1 | browser.find_element_by_xpath( "//input[@id='wd']" ) |
8. 用by定位元素
有时需要使用定位方法,在具体通过哪种定位方式(id 或 name)根据实际场景而定位,By 就可以设置定位策略。
1 2 3 4 5 6 7 8 | browser.find_element(By. ID , 'kw' ) browser.find_element(By.NAME, "wd" ) browser.find_element(By.CLASS_NAME, "s_ipt" ) browser.find_element(By.TAG_NAME, "input" ) browser.find_element(By.LINK_TEXT,u "新闻" ) browser.find_element(By.PARTIAL_LINK_TEXT,u "新" ) browser.find_element(By.XPATH, "//*[@class='bg s_btn']" ) browser.find_element(By.CSS_SELECTOR, "span.bg s_btn_wr>input#su" ) |
find_element()方法只用于定位元素。它需要两个参数,第一个参数是定位方式,这个由 By 提供;第二个参数是定位的值。在使用 By 时需要将 By 类导入。
1 | from selenium.webdriver.common.by import By |
ps:如果在使用过程中发现pycharm没有提示,那么说明你导入了假的selenium,需要进入到python的安装目录,python.exe的同级目录下手动删除selenium文件夹;
9. 使用浏览器调试工具直接获取xpath语句
分类:
自动化相关
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Huawei LiteOS基于Cortex-M4 GD32F4平台移植
· mysql8.0无备份通过idb文件恢复数据过程、idb文件修复和tablespace id不一致处