【问题标题】:StaleElementReferenceError When Search for regex Using Watir-WebDriver使用 Watir-WebDriver 搜索正则表达式时出现 StaleElementReferenceError
【发布时间】:2013-01-30 04:23:10
【问题描述】:

我在尝试在页面中搜索正则表达式时遇到错误。我使用以下内容来实际定位正则表达式,但我收到了各种错误。

...
browser.script.html.include? "event49"

这些错误似乎与浏览器(也可能是环境)有关。我在 Safari、Chrome 和 Firefox 之间来回测试过。 Firefox 似乎有间歇性问题。铬,几乎不变。我还在我的 PC 和 Mac 之间进行了测试,它似乎是全面的标准。

我对 Safari 没有任何意见。

此错误来自 Firefox:

[remote server] resource://fxdriver/modules/web_element_cache.js:7204:in `fxdriver.cache.getElementAt': Element not found in the cache - perhaps the page has changed since it was looked up (Selenium::WebDriver::Error::StaleElementReferenceError)

此错误来自 Chrome:

/Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok': getElementTagName execution failed; (Selenium::WebDriver::Error::StaleElementReferenceError)
Element does not exist in cache

非常感谢任何帮助!

更新:

请看下面的脚本:

require "rubygems"
require "watir-webdriver"
require "watir-webdriver-performance"
require "rspec"
include Watir
require 'logger'

browser = Watir::Browser.new :chrome

test_site = 'http://laughlin:driveafirestone@fcac-rebrand.laughlin.com/'
browser.goto(test_site)

year_select = browser.select_list(:id => 'universal-year')
browser.select_list(:id => 'universal-year', :disabled => 'disabled').wait_while_present
year_select.select '2010'

make_select = browser.select_list(:id => 'universal-make')
browser.select_list(:id => 'universal-make', :disabled => 'disabled').wait_while_present
make_select.select 'Volkswagen'

model_select = browser.select_list(:id => 'universal-model')
browser.select_list(:id => 'universal-model', :disabled => 'disabled').wait_while_present
model_select.select 'Jetta'

submodel_select = browser.select_list(:id => 'universal-submodel')
browser.select_list(:id => 'universal-submodel', :disabled => 'disabled').wait_while_present
submodel_select.select '2.0T TDI Sedan'

zipcode_input = browser.text_field(:id => 'universal-selectorZip')
zipcode_input.set '53202'

browser.button(:id => 'universal-submit-tires-quote').click

browser.script.html.include? "event49"

browser.close

【问题讨论】:

  • 您应该包含重现问题的完整脚本(即您之前问题中的脚本,但已清理为仅包含所需的代码)。

标签: selenium watir watir-webdriver


【解决方案1】:

你怎么用

Watir::Wait.until(30) { browser.text.include? "event49" }

【讨论】:

  • 好主意,但似乎不起作用。只是超时。如果您查看源代码,您可以看到该元素存在。
  • browser.text 只返回可见文本。它不会在脚本元素中包含文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2011-09-02
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
相关资源
最近更新 更多