[英]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.