Tag:

Selenium WebDriver:流畅的等待按预期工作,但隐含的等待不会

我是Selenium WebDriver的新手,并试图理解“等待”元素出现的正确方法。 我正在测试一个包含单选按钮答案的问题。 当您选择答案时,Javascript可以启用/禁用页面上的一些问题。 问题似乎是Selenium“点击得太快”而不是等待Javascript完成。 我试图用两种方法来解决这个问题 – 明确的等待解决了这个问题。 具体来说,这工作,并解决了我的问题: private static WebElement findElement(final WebDriver driver, final By locator, final int timeoutSeconds) { FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver) .withTimeout(timeoutSeconds, TimeUnit.SECONDS) .pollingEvery(500, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class); return wait.until(new Function<WebDriver, WebElement>() { public WebElement apply(WebDriver webDriver) { return driver.findElement(locator); } }); } 但是,我宁愿使用隐式等待而不是这个。 我有我的网络驱动程序配置像这样: driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 这不能解决问题,我得到一个NoSuchElementException。 另外,我没有注意到10秒的停顿 – 它只是立即出错。 […]

自动化 – 如何验证画布图像的变化?

我试图编写一个测试来验证canvas图像的变化。 元素: <canvas width="1620" height="1080"></canvas> 我有一个厨房的形象,有一些不同的东西,例如橱柜,背景。 例如,我改变内阁 图像被改变 但是由于它是画布,我无法验证更改,因为它们不在DOM中。 我搜索了很多不同的这个问题的解决方案,但我不认为他们是正确的。 例如,一个解决方案是在前后制作截图,然后比较它们。 但是,如果当我改变404页面会出现什么? 然后我的测试会成功,因为截图会有所不同(因为它们应该是)。 有没有什么好办法做到这一点? 我正在使用Kotlin + Selenide编写测试,但Java + Selenium中的示例完全正确。 谢谢!