基于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"

posted @ 2021-01-20 18:35  汪李红  阅读(357)  评论(0)    收藏  举报