【问题标题】:Selenium - How to check that a text is present in an element?Selenium - 如何检查元素中是否存在文本?
【发布时间】:2021-09-23 07:03:15
【问题描述】:

HTML:

<span class="A" style="color: rgb(10, 133, 154);">3 </span>

硒:

var totalCount = await driver.findElement(By.css(".A")).getText();

场景:

  1. 在 Selenium 中,我编写了一个将值“3”存储到 totalCount 中的代码。

  2. 当我运行代码时,10 次中有 5 次成功。

  3. 对于那些失败的时间,返回给 totalCount 的值是“NaN !”

  4. 我不知道为什么,但我认为是因为文本 ('3') 尚未加载。

我想做的事:

  1. 运行检查以确保在将元素中的文本存储到 totalCount 之前加载它。
  2. 我可以在这里找到最接近的:https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/until.html 是 elementTextContains()。

问题:

  1. 我可以在'elementTextContains(element,substring)'的子字符串参数中放入什么来表示只要有文本,代码就可以继续?
  2. 我可以使用其他函数来实现此目的吗?

【问题讨论】:

  • 如果你知道文本可以是什么,那么你可以使用正则表达式

标签: javascript html selenium


【解决方案1】:

您是否尝试过显式等待?

let ele = await driver.wait(until.elementLocated(By.css('A')) , 10000);
let foo = await ele.getText();

显式等待可用于 Selenium 客户端的命令式, 程序语言。它们允许您的代码停止程序执行, 或冻结线程,直到您通过它的条件解决。这 条件以一定的频率被调用,直到超时 等待已过。这意味着只要条件返回 一个虚假的值,它将继续尝试和等待。

..

由于显式等待允许您等待条件发生,因此它们 非常适合在浏览器和浏览器之间同步状态 它的 DOM 和你的 WebDriver 脚本。

Official reference

【讨论】:

  • 我试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 2018-01-23
  • 2021-05-17
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多