无法评估xpath表达式'/ html'或不在WebElement中进行评估

时间:2014-10-24 08:43:08

标签: internet-explorer selenium xpath jenkins capybara

我知道其他问题已经引起错误,但没有任何有用的答案。

我正在使用Capybara,Turnip和Selenium与IEDriver,浏览器 - IE8,对Jenkins CI进行runnin测试 保护模式 - 关闭,所有安全级别 - 低

我的能力

来自CI日志

Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=false, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=8, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=true, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:18573/, ie.forceCreateProcessApi=false, nativeEvents=false, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}] 

从我的代码

when 'selenium-ie-remote'
    client = Selenium::WebDriver::Remote::Http::Default.new
    client.timeout = ENV['CLIENT_TIMEOUT'] ? ENV['CLIENT_TIMEOUT'].to_i  :  60
    capabilities = Selenium::WebDriver::Remote::Capabilities.new
    capabilities[:introduce_flakiness_by_ignoring_security_domains] = true
    capabilities[:javascript_enabled] = true
    capabilities[:css_selectors_enabled] = true
    capabilities[:ignore_protected_mode_settings] = true
    Capybara.register_driver :selenium do |app|
      Capybara::Selenium::Driver.new(app,
      :browser => :remote,
      :url => "http://#{ENV['VM']}:4444/wd/hub",
      :http_client => client,
      :desired_capabilities => :internet_explorer,
      :desired_capabilities => capabilities)
    end

步骤

中出现错误
step 'I should see :text' do |variable|
    wait_until_true { page.should have_content variable }
end

def wait_until_true(wait_time_seconds = Capybara.default_wait_time)
    start_time = Time.now
    loop do
        return true if yield
        break unless Time.now - start_time <= wait_time_seconds
        sleep(0.05)
    end
end

即使没有方法wait_until_true,也会出现错误,因此它不是失败的原因。

此外,该错误会不时出现(5次重新运行中有1次),因此不一致。

此外,我注意到当应用程序自行重定向到另一个页面时会出现错误(例如,单击“保存”按钮 - 出现索引页面)

有人知道解决方案吗?

1 个答案:

答案 0 :(得分:0)

我的一个决定是等待Capybara等待时间

def found_this_element(text)
  start_time = Time.now
  begin
    page.should have_content text
  rescue => e
    throw e if Time.now - start_time >= Capybara.default_wait_time
    retry
  end
end

但它是解决方法,如何更改IE的设置,以帮助省略错误...