使用Ruby在Selenium WebDriver中设置速度

使用Ruby在Selenium WebDriver中设置速度,ruby,selenium,webdriver,selenium-webdriver,Ruby,Selenium,Webdriver,Selenium Webdriver,有没有办法在ruby中设置Selenium Webdriver的执行速度 在selenium 1(RC)的perl中有$sel->set_speed(“500”) 但是由于SeleniumRC的一些限制,我不得不转向SeleniumWebDriver,并开始使用Ruby,我找不到同样的函数 阅读一些选项“Slow”、“Medium”和“Fast”作为参数,在C#和Perl中设置速度,但在Ruby中不这样做 注意-我确实使用此@driver.manage.timeouts.implicit_wai

有没有办法在ruby中设置Selenium Webdriver的执行速度

在selenium 1(RC)的perl中有
$sel->set_speed(“500”)

但是由于SeleniumRC的一些限制,我不得不转向SeleniumWebDriver,并开始使用Ruby,我找不到同样的函数

阅读一些选项“Slow”、“Medium”和“Fast”作为参数,在C#和Perl中设置速度,但在Ruby中不这样做

注意-我确实使用此
@driver.manage.timeouts.implicit_wait=30设置了超时,但我正在寻找执行速度。

根据中的,有两种方法Selenium.Client.Idiomatic模块:

  # Get execution delay in milliseconds, i.e. a pause delay following 
  # each selenium operation. By default, there is no such delay 
  # (value is 0).
  def execution_delay
    string_command "getSpeed"
  end

  # Set the execution delay in milliseconds, i.e. a pause delay following
  # each selenium operation. By default, there is no such delay.
  #
  # Setting an execution can be useful to troubleshoot or capture videos
  def execution_delay=(delay_in_milliseconds)
    remote_control_command "setSpeed", [delay_in_milliseconds]
  end

我想这会有所帮助。

在WebDriver中设置执行速度的方法不久前就被所有语言绑定弃用了。无法再修改正在运行的WebDriver代码的执行速度。

不,这不起作用,这些函数是Selenium客户端惯用模块的一部分,它不包括在WebDriver模块中?我想,这就是我得到的错误,顺便说一句,对于#`来说,
NoMethodError:undefined method
execution\u delay',那么解决问题的最佳方法是什么呢?点击一个链接,就会打开一个弹出窗口,我需要向该弹出窗口中的文本框发送键。有时加载弹出窗口需要更长的时间,因此,即使文本框id的find_元素确实出现,也会失败。我认为搜索元素id的尝试会立即开始,即使弹出窗口在30秒之前加载(我的显式超时),脚本也会失败;隐式等待在这里可能对您没有帮助。在项目直接支持的语言(Java、.NET、Ruby、Python)中,这可以使用
WebDriverWait
类(或其等效类)实现。此外,答案有点取决于你所说的“弹出”是什么意思。它是一个新的浏览器窗口吗?如果是这样,您需要使用driver.switch_to.window()将焦点放在正确的上下文中。如果它是由jQuery或类似的JavaScript小部件框架创建的“弹出窗口”,那么您的等待例程中的find_元素就是一个新的窗口弹出窗口,更准确地说是linkedin登录授权。我使用handles=@driver.window\u handles@driver.switch\u to.window(handles[1]),将控件切换到新窗口。。。但是发生的是。。弹出可能需要一两秒钟才能真正“弹出”,在此期间切换到窗口失败,并且所有步骤都明显失败。我目前已经到位。。睡眠2秒钟(在单击链接和等待切换到新窗口之间)。但我相信有更好的方法。是的,有。您使用的是Ruby,因此需要使用
Selenium::WebDriver::Wait
对象,并等待@driver.window\u handles.size>1。然后您可以继续前进并切换到新窗口。您可以在中看到这方面的示例。但是,请记住,driver.window\u句柄返回的句柄不能保证按照每个浏览器打开它们的顺序,因此您不一定只需要获取driver.window\u句柄[1]并期望它是新的窗口句柄。