使用Seleniumvalidation之间的文本

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

在具有特定ID的任何

之间检索文本的方法有哪些?

如果给出此页面 :

 
Make money by Selling items on Amazon Selling On Amazon Sell your items on Amazon.com. Amazon can help you grow your business and reach more customers.

当给出

,我需要提取

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

我应该使用哪种方法?

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

通常,当您需要与元素进行交互时,隐式等待就足够了。 一旦设置,它就用于每个元素查找。 根据我的经验,这对于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);