我需要验证网页上的特定插槽是否已加载。为此,我在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上销售您的商品。亚马逊可以帮助您发展业务并接触到更多客户。”
我应该使用哪种方法?
发布于 2012-07-18 22:05:45
要确保加载了元素,请使用Implicit and Explicit waits。
通常,当您需要与元素交互时,隐式等待就足够了。一旦它被设置,它就会被用于每个元素的查找。根据我的经验,这对95%的案例来说已经足够了。
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);如果你需要更高级的等待(或者只使用一次等待),显式等待是为你准备的。
有三种常用的方法来检索具有我所知道的特定id的元素:
如果您需要从一个元素开始,然后搜索它的子元素,那么driver.findElement(By.id("elemId"));
很多人使用driver.findElement(By.cssSelector("#elemId"));driver.findElement(By.xpath("id('elemId')"));
driver.findElement(By.xpath("//*@id='elemId'"));
要了解有关CSS selectors和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);https://stackoverflow.com/questions/11543010
复制相似问题