gpt4 book ai didi

selenium - Xpath 有效,可以在 Elements 和 Console 中找到,但在运行应用程序时找不到

转载 作者:行者123 更新时间:2023-12-04 08:40:11 28 4
gpt4 key购买 nike

我将 Selenium Webdriver 与 ChromeDriver 一起使用。用 XPath 掌握我的技能。
这是我尝试执行的一段代码:

WebDriver driver;
String baseURL = "http://youtube.com";
System.setProperty("webdriver.chrome.driver", "/Users/svetlana_yatsushko/Documents/workspace/selenium/chromedriver");

driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(baseURL);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.findElement(By.xpath("//*[@id='dismiss-button']//descendant::yt-formatted-string[1]")).click();
我有一个错误:

Exception in thread "main" org.openqa.selenium.NoSuchElementException:no such element: Unable to locate element:{"method":"xpath","selector":"//*[@id='dismiss-button']//descendant::yt-formatted-string[1]"}


我还尝试编写其他 XPaths 选项,例如
  • //*[@aria-label='No, thanks']
  • //*[@id='button']//*[text()='No, thanks']

  • 但是没有人能稳定工作,尽管这些 XPath 已在 Elements 和 Console 中找到并且有 1 个匹配节点。
    我注意到一种情况,例如,可以在 5 次中找到 2 次。或者有时连续5次都找不到...
    可能这是关于 XPath 问题,但我无法得到原因。
    希望你有类似的东西,可以帮助我。

    最佳答案

    当您设置 driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);这意味着 Selenium 将等待 30 秒来记录文档的属性 document.readyState 变成 complete .
    但是,经常会出现这样的情况,即 UI 是动态构建的,因此在页面加载后它可能会发生变化(可以添加一些元素,可以修改或删除一些元素)。
    因此,在后一种情况下,应该在 Selenium 中使用一种模式来等待元素 - 服务员(Wait 接口(interface)的实现)。他们可以灵活地等待元素对某个条件进行多次轮询。
    所以这

    driver.findElement(By.xpath("//*[@id='dismiss-button']//descendant::yt-formatted-string[1]")).click();
    可以改成这样:
    Wait<WebDriver> wait = new FluentWait<>(driver)
    .pollingEvery(Duration.ofMillis(100))
    .withTimeout(Duration.ofSeconds(30));

    wait
    .until(
    ExpectedConditions
    .visibilityOfElementLocated(
    By.xpath("//*[@id='dismiss-button']//descendant::yt-formatted-string[1]")
    )
    ).click();
    在这里您可以找到有关 how FluentWait works 的一些详细信息.

    关于selenium - Xpath 有效,可以在 Elements 和 Console 中找到,但在运行应用程序时找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64606328/

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