使用Selenium </div>验证<div>之间的文本

时间:2012-07-18 13:52:20

标签: java selenium webdriver selenium-chromedriver

我需要验证网页上的特定广告位是否已加载。我在main()函数中使用Selenium WebDriver(我应该使用JUnit测试用例吗?)。

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

如果给出this page

<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上销售您的商品。亚马逊可以帮助您拓展业务并吸引更多客户。”

我应该使用哪种方法?

1 个答案:

答案 0 :(得分:1)

为确保元素已加载,请使用Implicit and Explicit waits

通常,当您需要与元素进行交互时,隐式等待就足够了。一旦设置,它就用于每个元素查找。根据我的经验,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']"));
    
  4. 要详细了解CSS selectorsXPath,请参阅网络上的任何教程。


    关于案文:

    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);