gpt4 book ai didi

java - 我有正确的 XPath,但 selenium 没有在 Highcharts 弹出窗口中单击

转载 作者:行者123 更新时间:2023-12-01 16:19:12 26 4
gpt4 key购买 nike

我的应用程序是 Angular JS,我们正在使用 Highcharts。我试图单击弹出窗口上的关闭按钮,并且我有正确的 xpath(相对路径和绝对路径),可以找到正确的元素。

当我手动检查它时,但是当我使用 Java 从 Selenium 运行时,它不会单击它。它也不会抛出任何错误。我也尝试过使用 Javascript,但它没有点击,但是当我从控制台手动执行 JavaScript 时,它再次工作。

Selenium Version : 3.141.59

按钮:

enter image description here

控制台:

enter image description here

HTML 片段:

<button type="button" style="float:right" class="btn btnclose " data-dismiss="modal" aria-hidden="true">
<i class="fa fa-2x fa-times-circle">
</i></button>

代码:

document.getElementsByClassName('btn btnclose ')[1].click()

public static void clickByJS(WebDriver driver){
JavascriptExecutor js = (JavascriptExecutor)driver;
driver.switchTo().activeElement();
js.executeScript("document.getElementsByClassName('btn btnclose ')[1].click()");
}

enter image description here

注意:我还检查了弹出窗口的其他元素,当我手动在浏览器中尝试时,我可以验证 xpath 是否有效并找到该元素,但使用 Selenium 时不会单击。这不是页面加载问题,因为我尝试过多次显式等待,但运气不佳。由于某种原因,该元素不可见/难以处理。

最佳答案

确保您的定位器是唯一的。使用 chrome 控制台也可以放心,如下所示:

enter image description here

可能是同步问题。例如,当您的模型即将在页面上弹出时,Selenium 同时会进行单击。因此在这种情况下,单击将不会出现任何错误。在这种情况下,您可以引入显式等待,以确保元素已准备好执行操作。

WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button.btn.btnclose")));
element.click();

或者出于调试目的,您可以在脚本中使用 Thread.sleep 进行一些硬编码等待,以确保其是否存在计时问题。请注意,不建议使用硬编码等待。引用以下代码:

Thread.sleep(5000);
driver.findElement(By.cssSelector("button.btn.btnclose")).click();

执行点击的替代 Javascript 方法。

WebElement element = driver.findElement(By.cssSelector("button.btn.btnclose"));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();",element);

执行点击的另一种选择是 Actions

WebElement element = driver.findElement(By.cssSelector("button.btn.btnclose"));
Actions action = new Actions(driver);
action.moveToElement(element).click().perform();

关于java - 我有正确的 XPath,但 selenium 没有在 Highcharts 弹出窗口中单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62316711/

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