首页 > 其他分享 >selenium 定位

selenium 定位

时间:2023-04-19 16:33:21浏览次数:28  
标签:定位 text selenium find input div element class

1、find_element && find_elements 的区别:

1、
find_element     得到的是一个webelement的对象,只会返回查找到的第一个对象;
find_elements    得到的是一个列表,返回查找到的所有,并保存到列表中。
 
2、如找不到,
print(driver.find_element_by_id('kw'))   find_element 会报错,NoSuch ElementException
print(driver.find_elements_by_id('kw'))   find_elements  不会报错,但是会返回空列表
   
3、当我们想验证通过某个表达式,能否找到元素,判断页面是否存在元素
  # find_element    不存在会报错 ,可通过try...except...进行捕获
  try:
      driver.find_element_by_id('kw')
      print('元素存在')
  except:
      print('元素不存在')
      
  # find_elements   得到的是一列表,条件不满足是,可通过条件判断,返回True、False
  if driver.find_elements_by_id('kw')
      print('元素存在')
  else:
      print('元素不存在')
 
#在自动化测试中,一般使用find_element,不加s会更常见

 

2、driver.find_element 例子 

#唯一属性
driver.find_element(By.XPATH, "//a[text()='%s']" % str(home_text)).click() 

driver.find_element(By.XPATH, "//input[@placeholder='%s']" % str(repo_member_search_text)).send_keys(Keys.ENTER)

driver.find_element('class name', 'annotationList___Ctabb').find_elements(By.TAG_NAME, "div")

driver.find_element('xpath', "//span[text()=‘%s’]/div[3]/form/span[1]/input“ % str(edit_text_confirm_button_text)).click()


#属性不唯一
driver.find_element(By.XPATH, "//span[contains(text(),'%s')]" % str(order_cancel_button_text)).click()



#class属性中间有空格时,叫做复合类,复合类一般不建议通过class属性来定位,因为会报错。
解决方法:只写复合类属性的某一部分(不能有空格),但与其他class属性重复的概率就会增加

#绝对路径比较复杂,一般写xpath不太会使用绝对路径,一般使用相对路径。

#相对路径以//开始,如//div[@class=’schbox’]/form/input[1],首先要找的是class属性为schbox的那个div,然后再找这个div下的form下的第1个input

 

3、XPATH

1)基本用法(属性唯一:直接@属性):

  如:

  //input[@name='q']

  //input[@class=‘but1’]

  //input[@placeholder=‘请输入你要查找的关键字’]

  //input[@id='kw']

  //span[text()="设置"]  

2)and组合属性(属性不唯一:可以加and,可以加多个and):

  如:

  //input[@name='q' and @type='anony_srh']

  //a[text()="更多" and @name="tj_briicon"]

  //input[@type=‘text’ and @class=‘but1’ and @name=‘key’]

  input[name=‘key’][class=‘but1’]

3)单斜杠(/),通过父代找子带:

  //div[@id='kw']/div[@class='anony_srh'],//div[@id="s-top-left"]/a[text()="新闻"]

4)双斜杠(//),通过祖先找子孙元素:

  //div[@id='kw']//div[@class='anony_srh']
5)..通过子代找父代元素:

  //div[@class='anony_srh']/..
6)通过text文本,获取元素:

  //a[text()='百度']     # 不可用@,因为它不是属性 =====> 全部匹配
7)text()常与contains组合使用(contains是一个关键字,如//input[contains(@placeholder,‘请输入你’)],表示要查找placeholder属性包含“请输入你”的控件,包含内容需要是连续的

):

  //a[contains(text(),'百度')]   ====> 部分匹配

  //a[contains(@class,'anony')]
8)索引(需加括号):

  (//a[contains(text(),'百度')])[1]   # 从1开始
9)轴运算:

  following_sibling(元素之后,弟弟)   //*[@class='account-form-3rd-hd']//following_sibling::div
  preceding_sibling(元素之前,哥哥)  //[@class='account-form-3rd-hd']//preceding_sibling::div
  ancestor(祖先)           //a//ancestor::div[@id='anony-srh']
10)* 任意标签下的条件:

  //*[@id='kw']

 

 

参考链接:

https://blog.csdn.net/weixin_45294964/article/details/111672086 

https://blog.csdn.net/m0_53628535/article/details/118435788

 

标签:定位,text,selenium,find,input,div,element,class
From: https://www.cnblogs.com/sunshine-blog/p/17333709.html

相关文章

  • 【快应用】华为ide项目编译出错快速定位
     【关键词】编译报错,三方依赖 【问题背景】快应用版本发布后,接口或者组件新增一些属性,在将ide版本更新到最新或者支持该属性的版本后,使用这些属性时出现报错提示,如style‘xxx’isnotsupported等等,这种情形该如何处理呢?具体如下:​​​ 【问题分析】如上图所示,属......
  • selenium中的click()操作不稳定情况
      曾听说过click操作不稳定,今天碰到了,分享一波driver.get("D:\PythonFiles\wlxcUI\practice\检测代码\demo.html")driver.maximize_window()el=driver.find_element_by_name("mfile")el.click()通过name吵到的input元素,无法点击上传文件,更换为ActionChains(driver).move_t......
  • selenium部分知识点总结
    selenium部分总结最近写了一个selenium自动化脚本.基于此总结一些常用的代码1.用户输入换行符不终止输入strings=''s=input('请输入:(q停止输入)')whiles!='q':#此处可自行设置strings=strings+s+'\n's=input()"""输入:B07RW2M73......
  • gdb 调试技巧:定位程序卡死问题
     gdb调试技巧:定位程序卡死问题 最近遇到一个程序卡死的问题,借助gdb轻松定位,供大家参考。遇到程序卡死不退处,可能不知道卡死在什么地方,如果程序非常简单,也许printf大法就可以很快定位。但是对于大型程序,尤其是一些框架程序,printf大法可能就力不从心了。实际的程序......
  • selenium三种等待方式 (强制等待、隐式等待、显示等待)
    ​ 方式一:强制等待time.sleep(n)#单位:秒复制代码程序表现:强制暂停程序运行,等待n秒后继续执行后续代码演示代码:time.sleep(3)driver.find_element(By.ID,"kw").send_keys("华测教育")复制代码方式二:隐式等待driver.implicitly_wait(n)#单位:秒复制代码......
  • uniapp 集成 sentry,并上传sourcemap,定位错误
    具体见:https://blog.csdn.net/weixin_49192390/article/details/113989218?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168178969316800197063528%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168178969316800197063528&a......
  • selenium爬取异步加载的网站
    为了便利化使用selenium驱动浏览器进行操作,遇到一个网页,大部分内容都是通过xhr请求后再通过前端js处理显示,带来的一个问题就是,采用显示等待无法准确的定位到需要的节点。因此,需要考虑采用判断xhr请求是否完成后再进行定位,或者直接获取xhr请求返回内容的做法。对于selenium爬虫来说,......
  • 安装程序无法创建新的系统分区,也无法定位现有系统分区
    说一下出现“安装程序无法创建新的系统分区,也无法定位现有系统分区”这种错误的一种情况。通过u盘启动盘进入pe系统,在pe系统里将iso镜像解压,然后运行里面的setup.exe程序,会出现上面的那种情况。pe里千万不要用这种方法安装系统,pe有自己的工具安装系统,如果您要安装正版系统,推荐winnt......
  • ITBP 是什么?如何定位才能实现企业与员工双赢?(我们看了50份大厂JD)
    进入数字经济时代,大多企业都在努力推进数字化转型。然而在这个过程中,企业共同遇到的一大难点就是业务与IT的融合度不高、协同合作不足。IT不理解业务,他们往往从技术的角度考虑问题;而业务不明白IT,不知道如何将业务语言转化为IT问题。最后就导致蓝图是一个样,落地又是另一个样。在此情......
  • selenium登录cnblogs、抽屉半自动点赞、xpath的使用、打码平台使用、scrapy介绍
    昨日回顾#1beautifulsoup4使用-xml解析库,用它来解析爬回来的html内容,从中找出我们需要的内容#2遍历文档树-.的使用soup.html.body.p.a-获取属性对象.attrs.get('href')-获取文本对象.textstringstrings-子节点,父节点,兄......