基于Robotframework的Web自动化之元素定位
基于Robotframework的Web自动化之元素定位
元素定位方法总共有以下8种:
id,name,link_text,partial_link_text,xpath,css,class_name,tag_name
其中不管用哪种方法定位都必须保证定位出来的元素是唯一的
在以上8种元素定位方法中最繁琐,最有用的两种定位元素的方式是xpath和css:
xpath定位有以下5种方式:
1、通过绝对路径定位:这种方式几乎不用
2、通过相对路径定位:(百度的搜索输入框)
//form(唯一标签作为父标签往下找)/span/input
3、通过元素属性定位: (百度的搜索输入框)
//input[@autocomplete="off"] 单属性
//input[@autocomplete="off" and @class="s_ipt"] 多属性,多属性每个属性前面都要加@
4、通过部分属性定位:(百度的搜索输入框)
//input[start-with(@autocomplete,"of")] 表示autocomplete属性的值以"of"开头
//input[contains(@autocomplete,"of")] 表示autocomplete属性的值包含"of"
5、通过文本定位:(新闻元素)
//a[text()="新闻"]
css定位也有以下5种方式:
1、通过绝对路径定位:这种方式几乎不用
2、通过ID或者Class定位:
#ID(id属性前面用#)
.class(class属性前面用.)
3、通过元素属性定位: (百度的搜索输入框)
input[autocomplete="off"] 单属性
input[autocomplete="off"][class="s_ipt"] 多属性,多属性用中括号连接
4、通过部分属性定位(百度的搜索输入框)
input[autocomplete^="of"] 表示autocomplete属性的值以"of"开头
input[autocomplete$="ff"] 表示autocomplete属性的值以"of"结束
input[autocomplete*="of"] 表示autocomplete属性的值包含"of"
5、通过子元素定位(新闻元素)
div#s-top-left a:nth-child(1) 表示id=s-top-left的div块下的a标签的第一个a标签
PS:
谷歌浏览器检查/调试xpath
1、f12在console控制台清空控制台
2、输入$x('xpath')[0],比如$x('//*[@id="qlogin_list"]/a[1]/img')[0]
其中步骤2中xpath使用单引号是为了防止xpath里面本身有双引号,末尾加[0]能把找到的那个元素打印出来
插播:浏览器及浏览器驱动下载地址
火狐浏览器(延长版):http://www.firefox.com.cn/download/#more
谷歌浏览器安装包:https://www.google.cn/chrome/
IE浏览器安装包:https://support.microsoft.com/zh-cn/help/17621/internet-explorer-downloads
谷歌浏览器驱动chromedriver.exe:http://npm.taobao.org/mirrors/chromedriver/
火狐浏览器驱动geckodriver.exe:https://github.com/mozilla/geckodriver/releases
IE浏览器驱动iedriverserver.exe:http://selenium-release.storage.googleapis.com/index.html
进入对应地址之后,选择合适自己浏览器版本的驱动下载,然后将chromedriver.exe文件复制到python的安装目录下,我的python安装目录是"D:\programfile\python3\chromedriver.exe"
浙公网安备 33010602011771号