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

一、文字定位:

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

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

就可以通过: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. c知识点总结2

    函数 int func(int x){ //x:形式参数 .... } int main(){ .... int res=func(z); //z:实际参数 } 实参与形参具有不同的存储单元, 实参与 ...

  2. wxpython程序基本功能源码整理,包括基本文字,输入框,字体设置,按钮绑定事件触发

    #coding=utf-8 import wx class MyApp(wx.App): def __init__(self): wx.App.__init__(self) def OnInit(se ...

  3. 谷歌浏览器安装插件时出现:程序包无效:“CRX_HEADER_INVALID" 后的解决办法

    以安装书签管理插件Neater Bookmarks为例: 1.下载:网址http://www.cnplugins.com/zhuanti/sixbookmarksintroduce.html 2.将下 ...

  4. Django基础之简介(二)

    三板斧 from django.shortcuts import render,HttpResponse, redirect ​ HttpResponse # 返回字符串 urls: urlpatte ...

  5. 原生JS代码实现随机产生一个16进制的颜色值

    封装一个函数 function getColor() { var str = "#"; //一个十六进制的值的数组 var arr = ["0", " ...

  6. IntelliJ IDEA 创建spring boot 的Hello World 项目

    1.Open IDEA,choose "New-->Project" 2.Choose "Spring Initializr" 3. Choose jav ...

  7. mysql优化-覆盖索引查询,join

    1 原始sql: SELECT a.* FROM event_data a WHERE a.receive_time >= '2018-03-28 00:00:00' AND a.receive ...

  8. CSS3 结构性伪类选择器(2)

    CSS3 结构性伪类选择器—first-child “:first-child”选择器表示的是选择父元素的第一个子元素的元素E.简单点理解就是选择元素中的第一个子元素,记住是子元素,而不是后代元素. ...

  9. 108天南京银行完成不可能完成的新金融DevOps转型

    在2018云栖大会南京峰会企业研发云专场,由南京银行研发管理负责人吴攀带来了“云效助力新金融DevOps转型——南京银行实践之路”的主题分享.首先对南京银行的研发规模与成长做了介绍,对“鑫云+”的诞生 ...

  10. php implode()函数 语法

    php implode()函数 语法 作用:把数组元素组合为字符串惠州大理石平板 语法:implode(separator,array) 参数: 参数 描述 separator     可选.规定数组 ...