繁体   English   中英

在我的 Selenium 脚本中添加 Thread.sleep 会中断执行

[英]Adding a Thread.sleep in my Selenium scripts is breaking the execution

这是一个简单的 Selenium 脚本,我在其中启动 URL 并执行几个点击操作。 当我在这几个步骤中的任何一个之间放置一个 Thread.sleep(2000) 时,执行中断并且我得到一个异常,如下所示。

2022 年 12 月 26 日下午 3:55:35 org.openqa.selenium.support.ui.ExpectedConditions findElement 警告:findElement(By.xpath: //button[text()='Continue']) org.openqa. selenium.NoSuchWindowException:没有这样的 window:目标 window 已因未知错误而关闭:web 未找到视图

如果我删除 Thread.sleep 步骤,它会继续进行。 有人能帮我理解为什么 Thread.sleep 会导致这个问题以及如何解决这个问题吗?

下面是代码:

    WebDriverManager.chromedriver().setup();
    ChromeOptions options = new ChromeOptions();
    options.addArguments("start-maximized");
    options.addArguments("enable-automation");
    options.addArguments("--no-sandbox");
    options.addArguments("--disable-infobars");
    options.addArguments("--disable-dev-shm-usage");
    options.addArguments("--disable-browser-side-navigation");
    options.addArguments("--disable-gpu");
    driver = new ChromeDriver(options);
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    wait = new WebDriverWait(driver, 30)
    
    driver.get("<ApplicationURL>");
    Thread.sleep(2000);
    driver.findElement(By.xpath("<some button to click>")).click();

观察:仅在尝试使用 CHROME 浏览器以及仅在 MAC 上尝试时会出现此问题。 在 Windows 上,这工作正常。 仅供参考,Chrome 浏览器版本:108.0.5359.124 ChromeDriver 版本:108.0.5359.71 MAC 操作系统版本:Monterey 12.6.2 Java 版本:1.8.0_352 Selenium 版本:3.11.0

需要为 InterruptedException 添加 throws 声明。 如果已添加,则错误可能是由脚本流引起的。 根据等待 2 秒的情况,该元素可能不可用。

它可能很高兴,但我们有隐式等待和显式等待。让我们使用显式等待而不是 thread.sleep。

WebDriverWait wait = new WebDriverWait(driver, 30);
driver.get("<ApplicationURL>");
WebElement element = driver.findElement(By.xpath("<some button to click>"));
wait..until(ExpectedConditions.visibilityOf(element));
element.click();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM