当前位置: 首页 > 知识库问答 >
问题:

Selenium+Ruby问题,因为页面重新加载

宋朝
2023-03-14
wait.until {driver.find_element(:xpath, "//input[@class='btn btn-success Testserver']")}
element = driver.find_element(:xpath, "//input[@class='btn btn-success Testserver']")
element.click
wait.until {driver.find_element(:xpath, "//input[@class='btn btn-success Testserver2']")}
element = driver.find_element(:xpath, "//input[@class='btn btn-success Testserver2']")
element.click
Selenium::WebDriver::Error::StaleElementReferenceError: The element reference is stale. Either the element is no longer attached to the DOM or the page has been refreshed.

共有1个答案

章增
2023-03-14

显然这是一个众所周知的硒问题。如果旧页面和新页面都有您要测试的元素,则很难等待加载新页面。

有一些解决办法,包括显式地从StaleElementReferenceError中恢复,并将其用作检查条件,以便您知道页何时完成重新加载。请参见如何让Selenium在单击后等待页面加载。

ruby中,它看起来如下所示(未测试):

def wait_until_reload(&block)
  old_element = driver.find_element(:tag_name, 'html')
  yield
  wait.until do
    begin
      old_element.first(id: 'doesnt-matter')
      false
    rescue Selenium::WebDriver::Error::StaleElementReferenceError
      true
    end
  end
end

wait_until_reload { element.click }
 类似资料:
  • 我想重新加载页面。我该怎么做?

  • 演示视频:https://www.youtube.com/watch?v=UBfnvx6jC_A 我学习了Udacity的离线Web应用程序课程,以便让我的应用程序离线工作。这是我的密码: 主要的js 服务人员。js 当我处于一个安装了服务人员并处于活动状态,并且缓存了我所有的东西的状态时,就会出现问题。当我打开开发工具并在Chrome中签入“重新加载时更新”时,如果我重新加载: 页面看起来相同,

  • 问题内容: 我们正在发出多个ajax请求,以“保存” Web应用程序中的数据,然后重新加载页面。我们遇到了这样一种情况:(由于请求是异步发出的)在ajax调用完成时或之前重新加载页面。一种简单的解决方案是使用“ async”:false选项启用ajax调用,从而强制进行同步调用。这似乎可行,但是在执行任何调用之前运行的对话框代码会延迟运行。 任何意见是极大的赞赏! 还应注意,在重新加载之前放置al

  • 问题内容: 我有一个带有php include的Div Tag,该div用来填充该信息,我想要做的是使它每隔15秒调用一次,以便它可以在那里更新信息,而不必重新加载整个网页。我试图用JavaScript / jQuery做到这一点,但似乎无法正常工作 这是我在搜索一些内容后所拥有的,然后发生的是,它加载了Small.php,但不会每15秒刷新一次或更新信息。 请帮忙! 我应该添加所有应显示的php

  • 嗨,伙计们,我是一个平均堆栈开发的初学者,我试图在注销后刷新页面。我尝试了;但它不起作用告诉我可能的代码页面重载在这种情况下

  • 我有一个ionic单页web应用程序,用户在其中完成一些信息并动态创建一些组件(新列、卡片等)。单击按钮后,我想在初始状态下完全重新加载页面。我尝试过角度生命周期挂钩,但似乎没有触发它们,因为路线没有变化。我也尝试了这条路线。导航(['home'),但它不起作用。我不需要保存任何数据。只需重新加载所有内容。