gpt4 book ai didi

java - 根据与已知元素的接近程度获取未命名的 Web 元素

转载 作者:行者123 更新时间:2023-11-30 06:27:33 26 4
gpt4 key购买 nike

我是一名初学者测试自动化人员,到目前为止我一直在使用直接 XPATH 引用。
现在,我的任务是对没有名称的列表中的列表项进行计数。
我可以使用 Chrome 检查复制 xpath,但该路径非常脆弱。在其上方添加任何元素都会使路径无效。寻找一种更智能的方式来查找列表。
我正在使用 Selenium-JUnit-GeckoDriver。
这是我的原始数据的示例:

...
<div class="entry-content" itemprop="text"><h3></h3>
<p>&nbsp;</p>
<p>texttexttexttexttexttexttexttext</p>
<p>&nbsp;</p>
<h4 class="p1"><span class="s1">List ONE</span></h4>
<hr>
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
<h4 class="p1"><strong><span class="s1">List TWO</span></strong></h4>
<hr>
<ul>
<li>d</li>
<li>e</li>
</ul>
...

在我现有的(和不充分的代码)中,我做了类似的事情:

// Find the text input element by xPath (from chrome inspect)
WebElement element = driver.findElement(By.xpath("//*[@id=\"main\"]/div/div/main/article/div[3]/div[1]/ul[1]"));
List<WebElement> listItems = element.findElements(By.tagName("li"));

...然后我对列表项进行测试。

如何自动化类似方法的操作,在其中给它一个搜索字符串(“List ONE”)并返回前面列表的所有列表项? (但不是“列表二”的列表项)?

最佳答案

因为我更熟悉它,所以我会在这里使用 CSS 选择器。假设列表的顺序不变,并且感兴趣的列表位于该 div 内,则第一个列表的 CSS 选择器将为:

div.entry-content > ul:nth-of-type(1)

如果您确实想坚持使用 XPath,我可以使用以下命令选择第二个列表:

/div[contains(@class, "entry-content")]//span[contains(text(), 'List TWO')]//parent::*/parent::h4/following-sibling::ul[1]

在这里,我们找到包含列表的 div、包含目标列表的标题,然后是所选 h4 后面的第一个 ul 列表元素。

关于java - 根据与已知元素的接近程度获取未命名的 Web 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46828352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com