为了账号安全,请及时绑定邮箱和手机立即绑定

Java Selenium WebElement element.findElements

Java Selenium WebElement element.findElements

绝地无双 2021-04-03 15:14:59
我正在使用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 回答

?
万千封印

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;

    }


查看完整回答
反对 回复 2021-04-18
  • 2 回答
  • 0 关注
  • 234 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信