2

我需要验证网页上的特定插槽是否已加载。我正在main()为此使用 Selenium WebDriver(我应该使用 JUnit 测试用例吗?)。

有什么方法可以在<div>具有特定 ID 的任何人之间检索文本?

如果给出这个页面

<div id="center-2" class="promo">
    <div class="unified_widget rcmBody">
        <span class="logo"><img src="someimage.gif" /></span>
        <span class="headline">Make money by Selling items on Amazon</span>
        <span class="link"><a href="/content/sell-on-amazon.htm">Selling On Amazon</a></span>
        <span class="body">Sell your items on Amazon.com. Amazon can help you grow your business and reach more customers.</span>
        <div class="h_rule"></div>
    </div>
</div>

<div id = center-2>给出时,我需要提取

“通过在亚马逊上销售商品赚钱”、
“在亚马逊上销售”、
“在 Amazon.com 上销售您的商品。亚马逊可以帮助您发展业务并吸引更多客户。”

我应该使用哪种方法?

4

1 回答 1

1

为确保元素已加载,请使用隐式和显式等待

通常,当您需要与元素交互时,隐式等待就足够了。设置后,它将用于每个元素查找。根据我的经验,这对于 95% 的情况来说已经足够了。

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

如果您需要一些更高级的等待(或只使用一次等待),则可以使用显式等待。


有三种常用的方法来检索具有id我所知道的特定元素的元素:

  1. 首选方式:

    driver.findElement(By.id("elemId"));
    
  2. 如果您需要从一个元素开始然后搜索其后代,这是一个好方法:

    driver.findElement(By.cssSelector("#elemId"));
    driver.findElement(By.xpath("id('elemId')"));
    
  3. 很多人使用的方式,因为他们对 XPath 很满意:

    driver.findElement(By.xpath("//*[@id='elemId']"));
    

要了解有关CSS 选择器XPath的更多信息,请参阅 Web 上的任何教程。


关于正文:

String text = driver.findElement(By.id("center-2")).getText();
System.out.println(text);

输出

通过在亚马逊上销售商品赚钱 在亚马逊上销售 在 Amazon.com 上销售您的商品。亚马逊可以帮助您发展业务并吸引更多客户。

如果您想独立获得这三件事,请使用例如:

String headline = driver.findElement(By.cssSelector("#center-2 .headline")).getText();
System.out.println(headline);

String link = driver.findElement(By.cssSelector("#center-2 .link")).getText();
System.out.println(link);

String body = driver.findElement(By.cssSelector("#center-2 .body")).getText();
System.out.println(body);
于 2012-07-18T14:05:45.023 回答