gpt4 book ai didi

javascript - Selenium:我怎么能告诉 Selenium 等待按钮元素?

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

我有一个验证按钮,在我点击它后会有一些延迟(在我点击它后它会显示一个包含元素的网格),然后出现一个重定向到下一页的 NEXT 按钮。我有这段代码:

((JavascriptExecutor)driver).executeScript("arguments[0].click()",driver.findElement(By.cssSelector("div#button-verify-wrapper > a")));
Thread.sleep(18000);
driver.findElement(By.xpath(".//*[@id='select-a-data-source-footer']/div/div/a")).click();
Thread.sleep(5000);

但我想点击 NEXT 按钮,在所有网格充电之后(这需要一段时间取决于当时的服务器),因为下一个按钮只出现在网格之后出现。

有selenium语句可以做到吗?

最佳答案

Selenium 提供两种类型的 waits如下:-

  • Explicit wait :-

    显式等待是您定义的代码,用于等待特定条件发生,然后再继续执行代码。最坏的情况是 Thread.sleep(),它将条件设置为等待的确切时间段。提供了一些方便的方法,可帮助您编写仅在需要时等待的代码。 WebDriverWait结合ExpectedCondition这是可以实现的一种方式。所以你应该尝试:-

    WebDriverWait wait = WebDriverWait(drive, 10);
    wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("div#button-verify-wrapper > a"))).click();

    wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//*[@id='select-a-data-source-footer']/div/div/a"))).click();
    //Now find further element with WebDriverWait for the process
  • Implicit wait :-

    隐式等待是告诉 WebDriver 在尝试查找一个或多个元素(如果它们不是立即可用的)时轮询 DOM 一段时间。默认设置为 0。设置后,隐式等待设置为 WebDriver 对象实例的生命周期。

    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

    driver.findElement(By.cssSelector("div#button-verify-wrapper > a"))).click();
    driver.findElement(By.xpath(".//*[@id='select-a-data-source-footer']/div/div/a")).click();
    //Now find further element for the process

关于javascript - Selenium:我怎么能告诉 Selenium 等待按钮元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39713549/

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