我正在使用Java和Selenium测试Web应用程序。我试图在页面上单击一个按钮,该页面上存在两个具有相同类名和文本的按钮。因此,我先找到父元素,然后在其子元素中寻找我的按钮。我正在执行以下操作,并得到了意外的结果。public static List<WebElement> findSubElementsUsingHtmlXpathClass(String htmlElement, String className, WebElement parent) { String xPathString="//" + htmlElement + "[contains(@class, '" + className + "')]"; List<WebElement> elements = parent.findElements(By.xpath(xPathString)); return elements;}这将返回不属于父元素的元素。这是我打电话给的地方:String htmlElement = "div"; String className = "tabs-container"; List<WebElement> elements = Common.findElementsUsingHtmlXpathClass(driver, htmlElement, className); Common.myPrint(thisClass + " no of elements found: " + elements.size()); for (WebElement element : elements) { // outerHTML: <input class="form-control btn btn-info" value="Create item" // type="button"> // inner: String htmlElement2 = "input"; String className2 = "form-control btn btn-info"; String textToFind = "Create item"; List<WebElement> subElements = Common.findSubElementsUsingHtmlXpathClass(htmlElement2, className2, element);HTML我想念什么吗?通过忽略返回的第一个元素,我已经能够解决此问题,但这只能在这种特定情况下得到保证。
2 回答
![?](http://img1.sycdn.imooc.com/54584cde0001d19202200220-100-100.jpg)
万千封印
TA贡献1891条经验 获得超3个赞
尝试使用CSS-Selector而不是XPath:
public static List<WebElement> findSubElementsUsingCSS(String className, WebElement parent) {
String cssString="." + className;
List<WebElement> elements = parent.findElements(By.cssSelector(cssString));
return elements;
}
添加回答
举报
0/150
提交
取消