gpt4 book ai didi

Java Selenium WebElement element.findElements 未按预期工作

转载 作者:行者123 更新时间:2023-12-02 02:05:11 24 4
gpt4 key购买 nike

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

我错过了什么吗?

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

最佳答案

您的 XPath 需要更改如下(需要在双斜杠之前添加 .)。您需要从当前父元素中选择子元素。因此,在 Xpath 中,.需要指定以指示其为当前节点。

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;
}

关于Java Selenium WebElement element.findElements 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50948873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com