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

What is best strategy to verify text of multiple elements without adding a ton of locators in a selenium framework?

我想使用 selenium java 自动执行测试,我需要检查整个页面上是否不存在特定文本。

该页面有许多元素可能会出现此文本。一般来说,如果它是几个元素,我可以通过标准 driver.findElement(By.xpath("//somepath")).getText() 来解决这个问题。但是,我想编写一个高效的测试,它没有大量的定位器只是为了这个测试。

您可以使用 XPATH 选择器 '//*[contains(text(), "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);

String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue(bodyText.contains(text));

或在方法中:

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

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