- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在测试一个应用程序,在该应用程序中有一个包含复选框的表(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/
我正在使用 Polymer 进行一些演示。这个在这里: https://www.polymer-project.org/components/core-ajax/demo.html 有效的代码如下所示
我试图了解 polymer 是否是为特定用例构建的——第三方网络组件。 我需要完成的是创建一个 Web 组件,它从调用者的页面获取图像 URL(元素上的属性是可以的)作为输入,并在 polymer 组
我想使用 Polymer.import( elements, callback ) 动态导入元素。如果元素已经导入,则永远不会调用回调,否则在加载元素时调用。 问题是:是否有一种标准的方法来确定是否加
这个问题在这里已经有了答案: CSS: Special Fluid Layout Problems (5 个答案) 关闭 3 年前。 我有以下测试代码可以使用: http://jsfiddle.ne
我正在尝试为我们的测试框架连接 Mocha/Chai/Karma。我几乎已经到达那里,使用 Polymer 单元测试指南作为基础。我想要更简单的东西,只需要一个 tests.js脚本并使用 Bower
如果我将 margin-top 放在第一个列表项 (LI) 上,那么 margin 在 ul 之外。 最后一项和 margin-bottom 也是一样的。但是 margin-left/margin r
我正在尝试绝对定位一个 ASP.NET 数据列表,该数据列表位于包含 TR 和 TD 元素的表格内 - 我水平显示 TR - 应用绝对定位仅显示最后一个 TD 元素。使用相对/静态显示整个 TD 元素
我是一名优秀的程序员,十分优秀!