首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >故障定位元件

故障定位元件
EN

Stack Overflow用户
提问于 2015-10-26 13:04:42
回答 2查看 76关注 0票数 1

我正在测试一个应用程序,在应用程序中有一个包含复选框(3行,x列)的表。下面是这个表的一部分(1行)的html。我试图单击其中一个项目的文本,以便根据文本选择或取消选中复选框。因此,例如,我想点击文本‘文本旁边的复选框nr 8’,以选择那个文本框。但是,我不想使用/table/tbody/tr2/td2/div/span等代码通过硬xpath进行访问,而是基于文本。我正在尝试像下面这样的代码,但它们似乎不起作用:

代码语言:javascript
运行
复制
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创建一个字符串,所以您只需更改要单击的文本以更改测试,如下所示:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
<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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-26 13:11:22

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

代码语言:javascript
运行
复制
//*[@class='settingswidgets' and text()='Text next to checkbox for nr 8']

在简单的英语中,XPath的意思是-查找文档中的任何元素,其class="settingswidgets"和文本等于Text next to checkbox for nr 8。不幸的是,这种因素不存在。

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

代码语言:javascript
运行
复制
//span[text()="Text next to checkbox for nr 8"]

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

然后,您可以使用:

代码语言:javascript
运行
复制
String text = "Text next to checkbox for nr 8";
String locator = "//span[text()='";
String xpathitem = locator + text + "']";
driver.findElement(By.xpath(xpathitem)).click();

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

票数 1
EN

Stack Overflow用户

发布于 2015-10-26 13:51:55

我没有足够的声誉添加注释,但如果您无法通过单击Span标记来选择选项,则需要单击input标记

ArrayList<WebElement> al=new ArrayList<WebElement>(); driver.findElements(By.className("settingwidgetsTitle"));

for(int i=0;i<al.size();i++){ if(driver.findElement(By.xpath(".//div[@class='settingwidgetsTitle']/span")).getText().equals("Option to Select")){

driver.findElement(By.xpath(".//div[@class='settingwidgetsTitle']["+i+"] /input").click()); break; }}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33346517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档