猿问

Java Selenium WebElement element.findElements

我正在使用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

我想念什么吗?


通过忽略返回的第一个元素,我已经能够解决此问题,但这只能在这种特定情况下得到保证。


绝地无双
浏览 235回答 2
2回答

万千封印

尝试使用CSS-Selector而不是XPath:public static List<WebElement> findSubElementsUsingCSS(String className, WebElement parent) {&nbsp; &nbsp; &nbsp; &nbsp; String cssString="." + className;&nbsp; &nbsp; &nbsp; &nbsp; List<WebElement> elements = parent.findElements(By.cssSelector(cssString));&nbsp; &nbsp; &nbsp; &nbsp; return elements;&nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Java
我要回答