当前位置: 首页 > 知识库问答 >
问题:

Selenium WebDriver使元素过时,因为在使用Knockout时,测试速度比UI快。js

韦棋
2023-03-14

我有一个HTML页面正在使用Knockout。js来填充一些列表。

当我点击一个按钮时,一个项目被添加到列表中。

我编写Selenium WebDriver测试:

  • 我找到按钮,然后点击它

我得到一个陈旧的元素异常。

如果我在点击后等待(在调试器中暂停,或添加一个线程。睡眠时间约500毫秒),测试通过。

我如何确保我找到的元素不陈旧?有没有WebDriver给我的属性可以测试?

共有1个答案

潘高洁
2023-03-14

可以定义隐式等待,以确保在与元素交互之前该元素存在

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

这将等待两个10秒的元素存在于DOM中

可能还有额外的JS更改,因此您可以在预期条件下使用显式等待

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.TextToBePresentInElementLocated(By.id("id"), "text"));
// do something with the element

这将等待两个10秒,让元素包含文本。

 类似资料:
  • 我有一组只在Visual Studio本地执行的UI测试。决定将它们集成到TFS中,并在每晚的构建中执行测试运行。 你知道我做错了什么吗?

  • 问题内容: 我从事ios开发已经有几个月了,渴望在我的编程模式中实现新的东西。 现在,我正在学习闭包,并且对其语法了解甚少,知道可以将其用于代替回调。以及在某些UIViewAnimation中实现和排序。 但是我真的想知道它的用途。也就是说,在基本编程中应该在哪里使用闭包。就像我们要从孩子向父母发送信息时使用委托一样。因此,在日常的快速编程中可以使用的有关其实际的任何解释或简短示例都会有所帮助?

  • 问题内容: 我正在尝试快速使用单元测试来测试一些实际的应用程序行为。当我尝试 从测试函数中将de 强制转换为我的代码时,出现了EXC_BAD_ACCESS异常。测试代码下方: AppDelegate类设置为public,因此从访问级别来看这不是问题。 在同一测试目标中使用Objective-C可以正常工作。下面的简单说明: 调试器说someDelegate是Builtin.RawPointer。不

  • 我正在使用Selenium(Java版本)测试一个基于OpenLayers的API。 我想测试一个使用的功能。控制修改功能。我想单击绘制的特征(SVG),然后拖动并检查它们是否存在、可见或隐藏。 我已经画了一个多边形,并且选择了它。见下图: 这些SVG元素的HTML如下所示: 假设我想选择红点。 我试过: 但是它总是返回一个空列表。 我做错了什么?有人能帮我吗? 多谢了。 编辑1-功能:垂直显示可

  • 问题内容: 题: 我需要比较2次-当前时间和设定时间。如果设定的时间是将来的时间,请找出剩余的分钟数,直到所说的未来时间为止。 其他资讯: 我目前正在使用 我从关于SO的另一个答案中窃取了有关如何以Int格式获取当前时间的信息。然后,我将未来时间分为小时(Int)和分钟(Int)并进行比较…但是,当您越过小时障碍时,这变得很奇怪。 问题答案: 您具有比较功能来比较2个NSDate来知道哪个是最新的

  • 问题内容: 为了快速测试一段代码,在Python中进行两次比较的正确方法是什么?我尝试阅读API文档。我不确定我是否了解timedelta。 到目前为止,我有以下代码: 问题答案: 只是两个日期时间之间的差异…所以就像一段时间,以天/秒/微秒为单位 请注意,它仅返回timedelta的微秒部分!出于计时目的,请始终使用。 您可以使用datetime.timedelta进行各种数学运算,例如: 不过