【发布时间】: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 能够找到那条线。
但是当> 和LBL_ 在不同的行时,我需要找到>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