首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Selenium验证<div>之间的文本

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

Stack Overflow用户
提问于 2012-07-18 21:52:20
回答 1查看 5.6K关注 0票数 2

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

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

如果给定this page

代码语言:javascript
复制
<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上销售您的商品。亚马逊可以帮助您发展业务并接触到更多客户。”

我应该使用哪种方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-18 22:05:45

要确保加载了元素,请使用Implicit and Explicit waits

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

代码语言:javascript
复制
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

如果你需要更高级的等待(或者只使用一次等待),显式等待是为你准备的。

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

  1. 首选方式:

如果您需要从一个元素开始,然后搜索它的子元素,那么driver.findElement(By.id("elemId"));

  • A是一个好方法:

很多人使用driver.findElement(By.cssSelector("#elemId"));driver.findElement(By.xpath("id('elemId')"));

  • The的方式,因为他们对XPath很熟悉:

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

要了解有关CSS selectorsXPath的更多信息,请参阅web上的任何教程。

关于文本:

代码语言:javascript
复制
String text = driver.findElement(By.id("center-2")).getText();
System.out.println(text);

输出

通过在亚马逊上出售商品、在亚马逊上出售商品、在Amazon.com上出售商品来赚钱。亚马逊可以帮助您发展业务并接触到更多客户。

如果你想独立得到这三样东西,使用例如:

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11543010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档