首页 > 其他分享 >Selenium4新特性-关联定位策略

Selenium4新特性-关联定位策略

时间:2023-01-22 11:33:28浏览次数:41  
标签:username 定位 locator 元素 关联 relative Selenium4 input

 

       Selenium 4 引入了关联元素定位策略(Relative Locators)。这种方式主要是应对一些不好定位的元素,但是其周边相关联的元素比较好定位。实现步骤是先定位周边较容易定位的元素,再根据关联元素定位策略定位到想定位的那个元素。如下以具体案例讲解用法。

      以页面relative_locator1.html为例,用于后续测试用。渲染页面,如图所示。

 

 

 

Above模式

 

    假定“输入用户名”input元素不好定位,而“输入密码”input元素容易定位,此时就可用relative locator的Above模式定位到“输入用户名”input元素。实现通过password input元素获取到username input元素,并且在username输入框输入字符“name1”。代码如下:

#大牛测试qq:2574674466
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.relative_locator import locate_with #这是在mac上执行的基于chrome浏览器上的测试,如下driver地址请根据实际情况进行修改。 chrome_driver_server = Service("/Users/xxx/Downloads/chromedriver") driver = webdriver.Chrome(service=chrome_driver_server) #如下是打开本地文件,请根据实际地址进行改写 driver.get("file:///Users/jason118/PycharmProjects/selenium4.0-automation/Chapter4/relative_locator1.html") #通过relative locator的above方式先获取到password input,然后再获取username input. username_locator = locate_with(By.TAG_NAME,"input").above({By.ID: "id_pass"}) username = driver.find_element(username_locator)username.send_keys('name1')

 

 

 

 

Below模式

 

 

以上面html为例,假设“输入密码”input元素不好定位,而“输入用户名”input元素容易定位,则可利用relative locator的Below模式定位到“输入密码”input元素。实现通过username input元素获取到password input元素,并且在password输入框输入字符“password1”。代码如下:

password_locator = locate_with(By.TAG_NAME,"input").below({By.ID: "id_username"})
password = driver.find_element(password_locator)
password.send_keys('daniu')

 

Left of模式

以上面html页面为例,假设“取消”按钮不好定位,而右边的“登录”按钮较容易定位,则可用relative locator的Left of模式定位到“取消”按钮元素。代码如下。

 

cancel_locator = locate_with(By.TAG_NAME,"button").to_left_of({By.ID: "id_login"})
cancel_element = driver.find_element(cancel_locator)
#输出取消按钮
print(cancel_element)

 

Right of模式

 

 

以上面html为例,假设“登录”按钮不好定位,而左边的“取消”按钮较容易定位,则可利用relative locator的Right of模式定位到“登录”按钮元素,代码如下。

#通过relative locator的Right of方式先获取到"取消"按钮,然后再获取"登录"按钮.
login_locator = locate_with(By.TAG_NAME,"button").to_right_of({By.ID: "id_cancel"})

 

Near模式

常用于某些元素与元素之间的相对关系不是很明显,如元素A并不是在元素B的正上方、正下方、正右边、正左边等,可采用Near模式,即在某元素的附近(方圆50px之内)也可被定位到。以上面html为例,如果要定位“输入用户名:”label元素,可以先定位username输入框元素,再使用Near模式定位到label标签,代码如下。

label_username_locator = locate_with(By.TAG_NAME,"label").near({By.ID: "id_username"})
label_username_element = driver.find_element(label_username_locator)
print(label_username_element)

 

Chaining relative locators模式

 

Chaining relative locators模式。意思是目标元素的位置既满足在元素A的“Above”位置,又满足在元素B的“Right of” 位置。以上面html为例,假设“取消”按钮元素不好定位,可以利用这种模式进行定位,需满足“输入密码”label元素的“Below”位置,又满足“登录”按钮元素的“Left of”位置,代码如下。

 

cancel_button_locator = locate_with(By.TAG_NAME,"button").below({By.ID: "id_label2"}).to_left_of({By.ID: "id_login"})
cancel_button_element = driver.find_element(cancel_button_locator)
#输出元素对象
print(cancel_button_element)

 

标签:username,定位,locator,元素,关联,relative,Selenium4,input
From: https://www.cnblogs.com/tim2016/p/17064316.html

相关文章

  • Web安全入门与靶场实战(12)- 统一资源定位符URL
    互联网中存在着无数的Web站点,在每个站点中都存放着大量的Web资源,那系统该如何区分用户准备访问的是哪个站点中的哪个资源呢?比如在Linux系统中我们要对某个文件进行操作,首先......
  • selenium-元素已定位到但无法选中的解决方法
    问题:元素定位唯一,但执行脚本时,提示报错:selenium.common.exceptions.ElementClickInterceptedException:Message:Element,简单来说,就是元素有覆盖,有重叠,点击不了  排查......
  • git 关联 github、gitee 仓库
    github官网创建仓库,取得仓库地址,我的这个是  https://github.com/xue-y/pay.git  gitee官网点击创建仓库,右上角 新建导入,进入导入页面 选择语言,点击导入按钮......
  • accessservice对于难定位的view如何定位
    privatestaticinttabcount=-1;privatestaticStringBuildersb;publicstaticvoidprintPacketInfo(AccessibilityNodeInforoot){sb=......
  • 红黑树与关联式容器
    1.红黑树相比于AVL树而言,红黑树并不是一颗平衡树,其节点的左、右子树高度差,长的不超过短的2倍。红黑树的特点如下:树的每一个节点都有一个颜色;空节点是黑色;根节点......
  • 微信小程序 wx.chooseLocation定位获取地址,并解析省市区
      1、申请开通 操作:小程序后台管理-开发-开发管理-接口设置--申请开通 2、调用wx.chooseLocation(Objectobject)    wx.chooseLocation({s......
  • vue中实现高德 地图定位功能
    index.html<template><divid="app"><divid="container"></div><div><p>经度:{{location.lng}}</p><p>纬度:{{location.lat}}</p>......
  • 3、app自动化:使用appium定位元素的方式及元素的常用操作
    前提:没有的包,要先进行对应包的安装如:pipinstallAppium-Python-Client一、定位元素,包括属性定位和xpath定位方式a\属性定位属性定位方式   示例content......
  • fixed 定位设置 scroll 不滚动
    我的问题是把容器的高度设置成了100vw,和视口保持同样的高度,所以设置scroll也无法滚动。尽管我试了很多其他方法都不能让其滚动。把高度设置成100%就可以了,结构如下:<......
  • selenium_webdriver_ java 进行元素定位时的页面跳转问题
    在UI自动化测试操作过程中有时候点击某个链接会弹出新的窗口,这时我们如果需要操作新打开页面中的元素,就需要将页面切换到新打开的页面上再进行操作。java实现如下://窗口切......