【问题标题】:Find a text with multiple lines and selenium webdriver. Using driver.pageSource().contains查找具有多行和 selenium webdriver 的文本。使用 driver.pageSource().contains
【发布时间】:2015-10-05 20:41:54
【问题描述】:

我正在尝试使用 Selenium WebDriver 查找多行文本。例如,我有这个 html:

<div class="record-label" data-name="age_child1_c">
    LBL_AGE_CHILD
</div>

如果我编码:

driver.pageSource().contains("LBL_AGE_CHILD")

Selenium 能够找到那条线。

但是当&gt;LBL_ 在不同的行时,我需要找到&gt;LBL_。我试过用 \n:

driver.pageSource().contains(">\nLBL_")

但它没有用。有谁知道我如何找到该模式是不同行中的字符串?

在 JeffC 回答后编辑:

我的最终目标是在给定页面中找到“LBL_”。 正因为如此,我想: driver.getPageSource().contains("LBL_); 是更好的方法。 此行在代码中查找“LBL_”,即使此时未显示“LBL_”,这对我实现目标很有趣。

问题是如果 selenium 在代码中查找“LBL_”,在大多数情况下可以找到包含“LBL_”的某些属性,例如: menu-item="LBL_CREATE_DASHBOARD_MENU"

这个“LBL_”永远不会显示在页面上,因为我不想找到它。当页面上显示“LBL_”时总是在模式下:“>LBL_”(但是>和LBL_可能在不同的行,比如这种情况)

【问题讨论】:

  • 好的。这现在更有意义了。我知道你在做什么......你想找到字符串“LBL_”,无论它在页面上的什么位置,隐藏或可见元素等。所以当你找到“LBL_”时,你想要什么做?您要打印包含它的元素还是打印 LBL_ ... 字符串的其余部分或?
  • 创建一个布尔变量,其值取决于 LBL_ 是否存在,并在 Junit 断言中使用此变量来运行测试。
  • 嗯,这比我想象的要简单得多……那为什么driver.pageSource().contains("LBL_AGE_CHILD") 不够好?你为什么要寻找“>”?
  • 因为“LBL_AGE_CHILD”只是一个例子。我需要找到以“LBL_”开头并出现在网站上的标签。这就是我不能使用“>”的原因,因为模式是在开头。

标签: java selenium selenium-webdriver


【解决方案1】:

了解新信息后重新开始...

如果你真的需要找到 ">(something)LBL_(something)" 那么我会研究正则表达式。这样的事情应该会为您指明正确的方向。

String regex = ">\\s*(LBL_\\w+)\\s*<";
Matcher matcher = Pattern.compile(regex).matcher(pageSource);
matcher.find();
System.out.println("Count: " + matcher.groupCount());
for (int i = 0; i < matcher.groupCount(); i++)
{
    System.out.println(i + ": " + matcher.group(i));
}

【讨论】:

  • 谢谢杰夫,我不知道真实案例中代码上的模式“>LBL_”在哪里。因此,我无法使用该 cssSelector,因为该模式甚至可能在不同未知 cssSelectors 下的代码中多次出现。
  • 我的最终目标是在给定页面中找到“LBL_”。因此我认为: driver.getPageSource().contains("LBL_");是更好的方法。即使当时没有显示“LBL_”,这一行也会在代码上查找“LBL_”,这对我实现目标很有趣。问题是如果 selenium 在代码中查找“LBL_”,在大多数情况下可以找到包含“LBL_”的某些属性,例如:menu-item="LBL_CREATE_DASHBOARD_MENU" 这个“LBL_”永远不会显示在页面上,因为我不想找到它。当页面上显示“LBL_”时始终处于模式下:“>LBL_”
猜你喜欢
  • 2012-04-22
  • 1970-01-01
  • 2017-10-27
  • 2021-11-11
  • 2021-04-03
  • 2016-12-10
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
相关资源
最近更新 更多