我需要验证网页上的特定广告位是否已加载。我在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上销售您的商品。亚马逊可以帮助您拓展业务并吸引更多客户。”
我应该使用哪种方法?
答案 0 :(得分:1)
为确保元素已加载,请使用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')"));
许多人使用的方式,因为他们对XPath感到满意:
driver.findElement(By.xpath("//*[@id='elemId']"));
要详细了解CSS selectors和XPath,请参阅网络上的任何教程。
关于案文:
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);