如何解决如何使用Selenium和Java从<span>标记获取文本并在其他页面上使用此文本
我想让文本包含在span标签中。
这是HTML
<div class="position">
<h1>
<span class="select-text">Some Text</span>
</h1>
</div>
我已经尝试过了
wd.findElement(By.xpath("//div[@class="position"]//h1//span")).getText();
但是我一直都收到此错误,并且IDK我在做什么错
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class="position"]//h1//span"}
其他问题:从该页面获取文本后,我需要确定此文本在另一页面上是否不可见。如果您有什么想法,我将不胜感激。
解决方法
我相信您会发现类别为“ position”的div的xpath选择器应为
div[contains(@class,'position')]
,
要从<span>
打印文本 Some Text ,您可以使用以下Locator Strategies中的任意一个:
-
使用 cssSelector 和
getAttribute("innerHTML")
:System.out.println(wd.findElement(By.cssSelector("div.position>h1>span.select-text")).getAttribute("innerHTML"));
-
使用 xpath 和
getText()
:System.out.println(wd.findElement(By.xpath("//div[@class='position']/h1/span[@class='select-text']")).getText());
理想情况下,要提取文本 Some Text ,因为该元素是动态元素,则必须为visibilityOfElementLocated()
引入WebDriverWait,并且可以使用以下任一方法Locator Strategies:
-
使用 cssSelector 和
getText()
:System.out.println(new WebDriverWait(wd,20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.position>h1>span.select-text"))).getText());
-
使用 xpath 和
getAttribute("innerHTML")
:System.out.println(new WebDriverWait(wd,20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='position']/h1/span[@class='select-text']"))).getAttribute("innerHTML"));
尝试使用此xpath:
wd.findElement(By.xpath("//div[contains(@class='position')]/h1/span[contains(text(),'Some Text') ]")).getText () ;
如果需要检查此文本是否存在于另一页中,则需要编写通用xpath,它将捕获结果。 使用if循环将当前字符串与另一个文本进行比较。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。