gpt4 book ai didi

java - 定位元件故障

转载 作者:行者123 更新时间:2023-11-30 07:50:58 26 4
gpt4 key购买 nike

我正在测试一个应用程序,在该应用程序中有一个包含复选框的表(3 行,x 列)。下面是该表的部分内容(1 行)的 html。我试图单击其中一项的文本,以根据文本选择或取消选择复选框。例如,我想单击文本“8 号复选框旁边的文本”以选择该文本框。但是,我不想使用/table/tbody/tr[2]/td[2]/div/span)[2] 之类的代码通过硬 xpath 去那里,但基于文本。我正在尝试类似下面的代码,但它们似乎不起作用:

driver.findElement(By.xpath("(//*[@class='settingsPanelTD' and text()='Text next to checkbox for nr 8']")).click();
driver.findElement(By.xpath("(//*[@class='settingswidgetTitle' and text()='Text next to checkbox for nr 8']")).click();
driver.findElement(By.xpath("(//*[@class='settingswidgets' and text()='Text next to checkbox for nr 8']")).click();

我想为最终的 xpath 创建一个字符串,这样您只需更改要单击的文本即可更改测试,例如:

String text = "Text next to checkbox for nr 8"; /** variable text based on what you want to click */
String locator = "//*[@class='settingswidgets' and text()='";
String xpathitem = locator + text + "']";
driver.findElement(By.xpath(xpathitem)).click();

这是 HTML:

<td class="settingsPanelTD" width="33%">
<div class="settingwidgetsTitle">
<input id="widgetsettings8" class="settingwidgets" type="checkbox" alt="2">
<span>Text next to checkbox for nr 8</span>
<a class="AddWidget" href="#"></a>
</div>
</td>
<td class="settingsPanelTD" width="33%">
<div class="settingwidgetsTitle">
<input id="widgetsettings9" class="settingwidgets" type="checkbox" alt="2">
<span>Text next to checkbox for nr 9</span>
<a class="AddWidget" href="#"></a>
</div>
</td>
<td class="settingsPanelTD" width="33%">
<div class="settingwidgetsTitle">
<input id="widgetsettings9" class="settingwidgets" type="checkbox" alt="2">
<span>Text next to checkbox for nr 10</span>
<a class="AddWidget" href="#"></a>
</div>
</td>

我正在使用 eclipse、Selenium 和 Java。

最佳答案

您使用的 XPath 不正确。您使用的第三个 XPath 最接近正确的解决方案:

//*[@class='settingswidgets' and text()='Text next to checkbox for nr 8']

用简单的英语来说,您的 XPath 意味着 - 查找文档中具有 class="settingswidgets" 且文本等于 Text next to checkbox for nr 8 的任何元素。不幸的是,不存在这样的元素。

您可以使用的一个潜在 XPath 是:

//span[text()="Text next to checkbox for nr 8"]

这将搜索具有适当文本的任何 span 元素。

然后您可以使用:

String text = "Text next to checkbox for nr 8";
String locator = "//span[text()='";
String xpathitem = locator + text + "']";
driver.findElement(By.xpath(xpathitem)).click();

这应该会产生所需的点击。

关于java - 定位元件故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33346517/

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