当前位置: 首页 > 面试题库 >

Selenium assertFalse失败,并带有staleelementreferenceException

卫俊誉
2023-03-14
问题内容

我用Java进行了selenium测试,并且正在做一些断言:

assertFalse(isElementPresent(By.xpath("//td[2]/div")));

private boolean isElementPresent(By by) {
try { driver.findElement(by); return true; }
catch (NoSuchElementException e) { 
return false; }

这是Selenium从IDE导出到Java Webdriver时生成的标准方法。

(是的,我想断言该元素不存在)

在上述代码行中进行测试时,我总是会收到错误消息:错误的元素引用:元素未附加到DOM

但是,当我在该步骤之前放置一个thread.sleep时,它可以工作。我没有得到的事实是,等待1毫秒就足够了。在断言之前等待通常吗?还有另一种解决方法吗?(明显的等待无济于事)来自德国的问候!


问题答案:

当你面对 staleelementreferenceexception
assertFalse()功能,否定FalsePossitive用例可以诱发
WebDriverWait
ExpectedConditions

条款设置为
stalenessOf 内的assertTrue()功能如下:

Assert.assertTrue(new WebDriverWait(driver, 20).until(ExpectedConditions.stalenessOf(driver.findElement(By.xpath("//td[2]/div")))));

讲解

ExpectedConditions 条款 stalenessOf
将检查确定为元素的陈旧(By.xpath("//td[2]/div"))。当预期的元素过时时,您可以检查assertTrue(boolean condition)assertTrue()会断言条件为真。如果不是,则会引发 AssertionError

assertFalse(条件)

如果您仍然想实现引发 错误*
的FalsePossitive情况,您仍然可以:
assertFalse(condition)
*

Assert.assertFalse(new WebDriverWait(driver, 20).until(ExpectedConditions.stalenessOf(driver.findElement(By.xpath("//td[2]/div")))));


 类似资料:
  • 问题内容: 我可以通过我的AJAX帖子向遵循Django CSRF保护机制的人员提供帮助。我按照这里的指示进行: http://docs.djangoproject.com/en/dev/ref/contrib/csrf/ 我已经精确地复制了他们在该页面上拥有的AJAX示例代码: http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

  • 我需要在maven项目中解析json文件。为此,我从java文件(App.java)中的一个简单导入开始 然后,我尝试使用编译项目,但出现错误: 下面是我如何构建maven项目的: 我创建了maven项目: 你知道如何解决这个错误吗?

  • 问题内容: 我可以通过我的AJAX帖子向遵循Django CSRF保护机制的人员提供帮助。我按照这里的指示进行: http://docs.djangoproject.com/en/dev/ref/contrib/csrf/ 我已经精确地复制了他们在该页面上拥有的AJAX示例代码: http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

  • 我试着运行mvn声纳:声纳,我得到了这个: [ERROR]无法在YamarinArtifactId项目上执行goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar(默认-CLI):Can not execute sonar:FxCop执行失败。FxCop执行失败,返回代码为“521”。有关更多信息,请查看FxCop文档。->[帮助1] 你知道该怎么办

  • 变量 ssl_secret= zk_host=zookeeper zk_port=2181 broker_host=kafka-ssl broker_port=9092 sr_host=schema-registry sr_port=8181 sr_con=connect sr_con_port=8083 host=localhost

  • 我尝试运行这个gradle任务(通过gradlew) 它使用cucmber jvm 并收到此错误 当我从cmd中的同一路径运行同一行时: 更新1: 这个cmd在shell控制台中工作: ./构建/发行版/WebLarge测试/bin/WebLargeTests-f html:构建/报告/cucumber/-f json:构建/报告/cucumber/report.json--胶水com.waze.