我正在尝试使用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。
答案 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'