我得到这个网页来测试这个元素中是否包含某个关键字。
<div>
" "
"Network interface updated successfully"
</div>这是HTML代码,我试图获得的xpath是
//div[contains(text(),'interface')]但是这个xpath根本找不到这个元素。所以我尝试了不同的方法来找出它是如何工作的。
//div/text()[2]这个xpath与元素相匹配,但它不是我的最佳实践。
我附上了屏幕截图我所遭受的……

发布于 2021-09-29 05:02:21
我在这里发现了与你的例子相似的东西

现在,如果您希望将整个文本包含在该元素中,并且不希望通过脚本进行索引,则可以通过java脚本执行器进行索引。

使用java脚本执行器运行下面的语句,它将返回整个文本,一旦您获取文本,您就可以断言它是否包含预期的文本。
返回$x("//div@class='jconfirm-content'//div//div").textContent‘
发布于 2021-09-29 04:39:46
如果你这么确定第二个元素有文本。请使用以下代码。
List<WebElement> rows = driver.findElements(By.xpath("your xpath"));
String secondTxt = rows.get(1).getText();元素索引从0开始,因此下面是匹配的第0元素包含第1文本第1元素包含第2文本
如果文本索引在每个运行时都在更改,则不应根据索引获取文本。您应该迭代每个元素并获得文本.
发布于 2021-09-29 06:35:07
它们不是纯文本,而是文本节点。如果应用/text() selenium会引发错误,因为Selenium不支持它,请使用JavascriptExecutor
代码:
WebElement e = driver.findElement(By.xpath("//span[contains(@class, 'jconfirm-content')]//child::div[1]"));
String el = (String)((JavascriptExecutor)driver).executeScript("return arguments[0].childNodes[1].textContent;", e);
System.out.println(el);https://stackoverflow.com/questions/69370314
复制相似问题