在百度首页,通过文字,父子元素,兄弟元素进行定位

一、文字定位:

通过界面上的文字进行定位,注意如果同一个页面上存在多个同样的文字的情况,返回的值会是多个,建议只存在一个情况下才用这方法。

如:定位百度界面上的“地图”文字:

就可以通过:driver.find_element_by_xpath("//*[text()='地图']") ,进行定位。

driver = webdriver.Chrome()
driver.implicitly_wait(20)
driver.get("https://www.baidu.com")
print(driver.find_element_by_xpath("//*[text()='地图']").text)
sleep(5)
driver.quit()

二、父子元素定位

通过界面上的父元素和子元素关系定位:

如:通过输入框<input id="kw">元素来定位父元素<span>的父元素<form>

就可以通过:

driver.find_element_by_xpath('//*[@id="kw"]/../..')或driver.find_element_by_xpath('//*[@id="kw"]/parent::*/parent::form'),进行定位父级。

(1) . 表示当前节点,.. 表示父节点

(2)parent,取当前节点的父节点

driver = webdriver.Chrome()
driver.implicitly_wait(20)
driver.get("https://www.baidu.com")
print(driver.find_element_by_xpath('//*[@id="kw"]/../..').get_attribute("id"))
print(driver.find_element_by_xpath('//*[@id="kw"]/parent::*/parent::form').get_attribute("id"))
sleep(5)
driver.quit()

三、兄弟元素定位

通过界面上的兄弟元素关系定位:

(1)通过弟弟元素定位哥哥元素

如:通过定位百度界面上的“地图”定位哥哥元素“hao123”

就可以通过://*[@id="u1"]/a[3]/preceding-sibling::a[1]来进行哥哥元素定位,其中“a[1]”表示离本元素最近的一个a元素,如果是“a[2]”则表示离本元素最近的第2个a元素
driver = webdriver.Chrome(a)
driver.implicitly_wait(20)
driver.get("https://www.baidu.com")
print(driver.find_element_by_xpath('//*[@id="u1"]/a[3]/preceding-sibling::a[1]').text) # 上节点
sleep(5)
driver.quit()

(2)通过哥哥元素定位弟弟元素

如:通过定位百度界面上的“地图”定位哥哥元素“视频”

就可以通过://*[@id="u1"]/a[3]/following-sibling::a[1]来进行弟弟元素定位,其中“a[1]”表示离本元素最近的一个a元素,如果是“a[2]”则表示离本元素最近的第2个a元素
driver = webdriver.Chrome()
driver.implicitly_wait(20)
driver.get("https://www.baidu.com")
print(driver.find_element_by_xpath('//*[@id="u1"]/a[3]/following-sibling::a[1]').text) # 下节点
sleep(5)
driver.quit()

UI自动化通过文字、父子元素,兄弟元素定位的更多相关文章

  1. 子元素z-index高于父元素兄弟元素z-index被遮挡问题

    问题:最近在写样式时,遇到一个这样的问题,子元素的z-index值大于父元素兄弟元素z-index值,结果子元素超出父元素部分被父元素兄弟元素遮挡解决:将父元素的z-index值设置为大于兄弟元素z- ...

  2. 小程序ui自动化(一),用uiAutormatorViewer定位元素失败,如何解决

    1.定位元素 用android ADT自带工具:uiAutormatorViewer,会报如下错误 可能是环境与手机不兼容 可以用以下方法解决:(参考:https://blog.csdn.net/qq ...

  3. ui自动化之selenium操作(二)定位元素-简单操作

    1. 将浏览器最大化 这里拿chrome举例,但是我在执行的时候一直报错,被坑了好久; 解决办法: 这是因为chromedriver是和chrome一一对应的,不兼容的版本就会报错: 所有chrome ...

  4. js获取dom元素的子元素,父元素,兄弟元素小记

    原生jsvar a = document.getElementById("dom"); del_space(a); //清理空格 var b = a.childNodes; //获 ...

  5. jquery 子元素 后代元素 兄弟元素 相邻元素

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...

  6. UI自动化(selenium+python)之元素定位的三种等待方式

    前言 在UI自动化过程中,常遇到元素未找到,代码报错的情况.这种情况下,需要用等待wait. 在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverW ...

  7. robot framework UI自动化之登录

    前面已写环境的搭建,接下来就可以直接进行UI自动化的编写工作了 目录 1.准备工作 2.了解定位 3.一个登录案例 1.准备工作 第一步:需要使用chrome浏览器来测试,因此首先要有一个驱动,下载好 ...

  8. python ui自动化之元素定位和常用操作

    做ui自动化的最基础的就是页面元素定位了,如果连页面元素都定位不到,自动化从何谈起呢?接下来我们就看看页面元素定位的方法吧!(这里就用百度页面来进行演示) 一.最通用的几种定位方式: 1.通过id定位 ...

  9. line-height系列(二)——对行内元素(文字、图片、兄弟元素)、块级元素设置line-height后的表现

    >原创文章,转载请注明来源! 二.对行内元素(文字.图片.兄弟元素).块级元素设置line-height后的表现 对块级元素无效,对行内元素有效.可继承给行内元素. 文字的line-height ...

随机推荐

  1. 错误提示控件errorProvider

    http://www.cnblogs.com/suguoqiang/archive/2012/07/17/2596564.html 错误提示控件errorProvider VS显示: 核心代码: th ...

  2. Spring基础学习笔记

    1. Spring入门 1. 1 Spring的体系结构 1.2 HelloWorld 1.2.1 Maven的使用 1)maven 的javase工程目录结构: 2)maven的settings.x ...

  3. vue 组件间传值方式

    /* 父组件给子组件传值 1.父组件调用子组件的时候 绑定动态属性 <v-header :title="title"></v-header> 2.在子组件里 ...

  4. MemCache--01 解决session

    目录 1. MemCache介绍 2.Session与Cookie介绍 3. 安装部署Nginx 4. 安装部署PHP 5. 安装Mariadb数据库 6. 部署网站(phpMyAdmin) 7. 部 ...

  5. android 打卡 虚拟定位 sqlite

    1.使用android5.1模拟器 android5.1模拟器使用数据库管理参数文件,6.0及以后的版本使用xml文件管理 2.使用sqlite修改配置文件 3.修改secure库中的android_ ...

  6. Java List 类型转换

    java的类型转换让人忍不住在开始编码前骂一声  FUCK! 1  子类转父类 up List<SubClass> subs = ...; List<? extends BaseCl ...

  7. windowserver 常用命令

    1.查看端口占用: netstat -ano | findstr "服务端口号"2.查看程序运行id: tasklist | findstr  nginx 3.杀死进程  tskk ...

  8. CF429E Points and Segments

    链接 CF429E Points and Segments 给定\(n\)条线段,然后给这些线段红蓝染色,求最后直线上上任意一个点被蓝色及红色线段覆盖次数之差的绝对值不大于\(1\),构造方案,\(n ...

  9. 1349 - View's SELECT contains a subquery in the FROM clause

    mysql创建视图 报错1349 - View's SELECT contains a subquery in the FROM clause:: 原因创建视图的sql语句中有不支持子查询, 所以需要 ...

  10. python编程中的一个经典错误之list引用

    请看下面代码 class User: def __init__(self, name, hobby=[]): self.name = name self.hobby = hobby def add_h ...