Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找包含多行和selenium webdriver的文本。使用driver.pageSource().contains_Java_Selenium_Selenium Webdriver - Fatal编程技术网

Java 查找包含多行和selenium webdriver的文本。使用driver.pageSource().contains

Java 查找包含多行和selenium webdriver的文本。使用driver.pageSource().contains,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我正在尝试使用SeleniumWebDriver查找多行文本。例如,我有以下html: <div class="record-label" data-name="age_child1_c"> LBL_AGE_CHILD </div> Selenium能够定位该线路 但是当和LBL在不同的行中时,我需要定位>LBL。我尝试使用\n: driver.pageSource().contains(">\nLBL_") 但它不起作用。有人知道我如何定位不同行中的字

我正在尝试使用SeleniumWebDriver查找多行文本。例如,我有以下html:

<div class="record-label" data-name="age_child1_c">
    LBL_AGE_CHILD
</div>
Selenium能够定位该线路

但是当
LBL
在不同的行中时,我需要定位
>LBL
。我尝试使用\n:

driver.pageSource().contains(">\nLBL_")
但它不起作用。有人知道我如何定位不同行中的字符串模式吗

在JeffC答案之后编辑:

我的最终目标是在给定页面中找到“LBL”。 因此我想: driver.getPageSource()包含(“LBL”;是更好的方法。 这一行在代码中查找“LBL”,即使此时没有显示“LBL”,这对我实现目标来说是有趣的

问题是,如果selenium在代码中查找“LBL_u2;”,在大多数情况下可能会找到包含“LBL_2;”的某些属性,例如: 菜单项=“LBL\u创建\u仪表板\u菜单”


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

在新信息之后重新执行

如果你真的需要找到“>(something)LBL_uz(something)”,那么我会研究Regex。类似的东西应该会为你指明正确的方向

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));
}

String regex=“>\\s*(LBL\uw+)\\s*谢谢Jeff,我不知道真实情况下代码上的模式“>LBL\ux”在哪里。因此,我无法使用该cssSelector,因为该模式甚至可能在不同未知cssSelector下的代码中出现多次。我的最终目标是在给定页面中找到“LBL”。因此,我认为:driver.getPageSource()包含(“LBL_”);这是更好的方法。这一行在代码中查找“LBL”,即使此时没有显示“LBL”,这对我实现目标来说是有趣的。问题是,如果selenium在代码中查找“LBL”,在大多数情况下可能会找到包含“LBL”的某些属性,例如:menu item=“LBL\u CREATE\u DASHBOARD\u menu”此“LBL\u”从未显示在页面上,因为我不想找到它。当页面上显示“LBL”时,始终处于模式下:“>LBL”确定。现在这更有意义了。我明白你想做什么了。。。您希望找到字符串“LBL_”,无论它在页面上的何处、隐藏的或可见的元素等。因此,当您找到“LBL_”时,您想做什么?您想打印包含它的元素还是打印LBL的其余部分。。。字符串或?生成一个布尔变量,其值取决于LBL_uu是否存在,并在Junit断言中使用此变量来运行测试。这比我想象的要简单得多。。。那么为什么
driver.pageSource()包含(“LBL\u AGE\u CHILD”)
不够好呢?你为什么要找“>”?因为“LBL\u AGE\u CHILD”只是一个例子。我需要找到标签,以“LBL_”开始,并出现在网站上了。这就是为什么我不能使用“>”的原因,因为模式还在开始阶段。
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));
}