如何使用Selenium 2和Firefox检查页面的文本?

时间:2011-10-05 19:59:58

标签: ruby firefox selenium-webdriver

我正在尝试使用Selenium 2和Firefox检查文本是否存在,但似乎无法找到要使用的方法。我尝试使用方法is_text_present,这似乎是每个人都说的工作,但对我不起作用。我收到了返回的错误:

  

NoMethodError:#Selenium :: WebDriver :: Driver的未定义方法`is_text_present':0x1017232e0 browser =:firefox

如何使用Selenium 2和Firefox检查页面文本?

当我尝试这个堆栈溢出选项“Finding text in page with selenium 2”时,它对我不起作用,我相信它不起作用,因为我使用Ruby来做我的测试,而不是Java。

5 个答案:

答案 0 :(得分:6)

如果您不知道哪个元素应该是您的文字,您可以使用:

driver.page_source.include? 'TEXT_TO_SEARCH'

否则你可以使用Llelong和Thomp建议:

driver.find_element(:id=>"ELEMENT_ID").text.include? 'TEXT_TO_SEARCH'
driver.find_element(:class=>"ELEMENT_CLASS").text.include? 'TEXT_TO_SEARCH'

答案 1 :(得分:4)

您可以使用以下代码段在JAVA中找到该文本... 尝试使用相同的Ruby: - 。driver.getPageSource()包含( “TEXTTOSEARCH”);

答案 2 :(得分:1)

我不确定如何在Ruby中执行此操作,但您应该能够调用getPageSource()方法,并检查它是否包含您要查找的文本字符串。

如果在源代码中找不到文本,则可能需要确定包含该文本的确切元素,并在该元素上调用getText()方法。例如,这些是元素的一些常用标识符:

driver.findElement(By.xpath("xpathstring")).getText()
driver.findElement(By.className("className")).getText()
driver.findElement(By.name("elementname")).getText()
driver.findElement(By.id("idname")).getText()

还有几个元素标识符,如果这些不适合您,则必须查阅文档。

答案 3 :(得分:1)

require 'selenium-webdriver'
br = Selenium::WebDriver.for :firefox
br.get "http://cnn.com"
br.find_element(:id=>"cnnMainPage")
br.find_element(:id=>"cnnMainPage").text.include? "Mideast"

我在irb中对此进行了测试,因此您可能遇到计时问题(可能必须先等待元素出现)。

答案 4 :(得分:1)

这对我有用......

driver.page_source.should_not include 'Login failed'