Java 在selenium框架中验证多个元素的文本而不添加大量定位器的最佳策略是什么?

Java 在selenium框架中验证多个元素的文本而不添加大量定位器的最佳策略是什么?,java,selenium,selenium-webdriver,ui-automation,Java,Selenium,Selenium Webdriver,Ui Automation,我想使用SeleniumJava自动化一个测试,在这个测试中,我需要检查整个页面上是否没有特定的文本 页面中有许多元素,其中可能存在此文本。通常,如果是几个元素,我可以通过标准driver.findElementBy.xpath//somepath.getText解决这个问题。但是,我想编写一个高效的测试,它没有太多的定位器,只用于此测试。您可以使用XPATH选择器'/*[containstext,YOUR_TEXT]来查找所需的文本 Python上的代码示例: def find_text_on

我想使用SeleniumJava自动化一个测试,在这个测试中,我需要检查整个页面上是否没有特定的文本


页面中有许多元素,其中可能存在此文本。通常,如果是几个元素,我可以通过标准driver.findElementBy.xpath//somepath.getText解决这个问题。但是,我想编写一个高效的测试,它没有太多的定位器,只用于此测试。

您可以使用XPATH选择器'/*[containstext,YOUR_TEXT]来查找所需的文本

Python上的代码示例:

def find_text_on_the_page(text):
    selector = '//*[contains(text(), "{}")]'.format(text)
    elements = browser.find_elements_by_xpath(selector)
    assert len(elements), 'The text is not on the page'

希望,这将对您有所帮助。

您可以尝试通过xPath选择器来定位它,但我不推荐这样的测试

你肯定知道去哪里找测试吗?至少是网页的一部分

下面是如何实现这一点的代码示例:

List<WebElement> list = driver.findElements(By.xpath("//*[contains(text(),'" + text + "')]"));
Assert.assertTrue("Text not found!", list.size() > 0);
或在方法上:

public boolean isTextOnPagePresent(String text) {
    WebElement body = driver.findElement(By.tagName("body"));
    String bodyText = body.getText();
    return bodyText.contains(text);
}

希望这会有所帮助,但正如我所提到的,请尝试定义一个较小的测试范围。

这是一个关于策略的一般性问题,而不是关于被某些代码卡住的问题。这就是为什么我没有添加代码。这只是一个一般性的问题。我已经在我的问题中分享了上面的代码,我已经尝试过了。我只是在问更好的策略。。。
public boolean isTextOnPagePresent(String text) {
    WebElement body = driver.findElement(By.tagName("body"));
    String bodyText = body.getText();
    return bodyText.contains(text);
}