selenium已知一个元素定位同级别的另一个元素

1.需求与实际情况

看下图来举例
在这里插入图片描述

(1)需求

想点击test22(即序号-第9行)这一行中右边的“复制”这一按钮

(2)实际情况

只能通过id或者class定位到文件名这一列的元素,而操作这一列的元素是不能单独通过class、id或者其他什么样式定位到(因为整个列中:重命名、复制、删除这些个按钮都是一样的css样式)

2.解决方法

通过xpath来定位同级的元素。

即:driver.find_element(By.XPATH,“//a[@class=‘test22这一元素对应的class’]/..//a[@class=‘test22这一行的“复制”对应的class’]”)

解释就是:“//a[@class=‘test22这一元素对应的class’]”–>这一步是定位到了test22所在的这一行;“/+两个点”–>回到test22的上一级元素;因为找到了test22的上一级此时再向下定位相同行的同级元素就是这一步–>“//a[@class=‘test22这一行的“复制”对应的class’]”

3.实例

实际的css样式结构是下图

在这里插入图片描述

实际代码是下图

在这里插入图片描述

### 使用 XPath 在 Selenium定位网页元素的具体操作 #### 准备工作 为了能够使用 Java 和 Selenium 进行 Web 自动化测试,确保已经安装并配置好了 WebDriver 及其对应的浏览器驱动程序。此外,在项目中引入必要的依赖库。 #### 创建 WebDriver 实例 创建一个 `WebDriver` 的实例用于控制浏览器的操作: ```java import org.openqa.selenium.WebDriver; import org.openqa.sulenium.chrome.ChromeDriver; public class Example { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); try { // 打开目标网站 driver.get("http://example.com"); // 定位与交互逻辑... } finally { // 关闭浏览器窗口 driver.quit(); } } } ``` #### 应用 XPath 表达式进行元素定位 在上述代码的基础上,可以应用不同的 XPath 表达式来精确定位页面上的各个组件。以下是几个具体的例子说明如何实现这一点[^1]。 - **按标签名查找**:如果知道要找的是特定类型的 HTML 标签,则可以直接指定该标签作为路径的一部分。 ```java WebElement element = driver.findElement(By.xpath("//a")); ``` - **依据属性值查找**:当希望根据某些已知的属性(比如 id 或者 name 属性)去找到相应的控件时,可以通过下面的方式构建查询语句。 ```java WebElement inputField = driver.findElement(By.xpath("//input[@type='text']")); ``` - **组合条件查找**:有时候单靠一种方式可能无法唯一确定所需的目标对象;这时就可以考虑把多个特征结合起来形成更复杂的表达式。 ```java WebElement buttonElement = driver.findElement(By.xpath("//div[@id="__next"]/header/div/div/div/button[text()='搜索']")); ``` - **层级关系查找**:对于那些嵌套较深或者具有复杂结构的对象来说,按照它们之间的层次关系来进行筛选会更加有效率。 ```java List<WebElement> paragraphsInDivs = driver.findElements(By.xpath("/html/body//div/p")); ``` - **索引位置查找**:如果有若干相同级别的兄弟节点而只想选其中某一个的话,那么可以根据它们各自的顺序号来做进一步限定。 ```java WebElement secondParagraph = driver.findElement(By.xpath("(//section/article)[2]/p")); ``` - **部分匹配查找**:有时并不清楚完整的文本内容或属性值,但是记得一部分关键字也足以帮助缩小范围直至锁定最终的结果。 ```java WebElement linkWithPartialText = driver.findElement(By.xpath("//a[contains(text(), '登录')]")); ``` 以上就是一些常见的利用 XPath 技术配合 Selenium 工具完成自动化测试任务的方法概述。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值