Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用webdriver在新打开的浏览器上设置焦点_Ruby_Selenium Webdriver_Watir Webdriver_Ui Automation - Fatal编程技术网

Ruby 使用webdriver在新打开的浏览器上设置焦点

Ruby 使用webdriver在新打开的浏览器上设置焦点,ruby,selenium-webdriver,watir-webdriver,ui-automation,Ruby,Selenium Webdriver,Watir Webdriver,Ui Automation,我正在使用ruby和watir webdriver自动化一个web应用程序,在这个应用程序中,我遇到了这样一个场景:当我点击一个按钮时,一个新的浏览器被打开,我必须在新打开的窗口中填写一个表单。Webdriver无法将其标识为窗口 是否有处理此场景的方法?正如我所知,我们无法连接到不是由webdriver启动的浏览器实例 我使用下面的代码检查窗口是否存在 @browser.window(:title => /#{title}/i).wait_until_present 我还在下面的代码中

我正在使用ruby和watir webdriver自动化一个web应用程序,在这个应用程序中,我遇到了这样一个场景:当我点击一个按钮时,一个新的浏览器被打开,我必须在新打开的窗口中填写一个表单。Webdriver无法将其标识为窗口

是否有处理此场景的方法?正如我所知,我们无法连接到不是由webdriver启动的浏览器实例

我使用下面的代码检查窗口是否存在

@browser.window(:title => /#{title}/i).wait_until_present
我还在下面的代码中尝试检查所有打开的窗口,但是新的浏览器实例没有出现在列表中

@browser.windows.each { |w| p w.title}
我相信是为这个确切的用例开发的。它切换到不同的窗口,执行操作(作为代码块传递),然后切换回原始窗口。例如:

@browser.window(title: /#{title}/i).use do
  # Whatever you need to do on the new window, like:
  @browser.text_field(id: "some-id").set "Foo"
  @browser.button(id: "submit").click
end

您是否尝试过以下内容:
driver.SwitchTo().Window(driver.WindowHandles.Last())?这可能不是Ruby的正确语法,但它应该比较接近。您确定它实际上是一个浏览器窗口吗?有没有可能它只是页面上的一个元素,看起来像一个弹出窗口?例如,看起来像一个窗口,但只是原始浏览器窗口(即不是新窗口)中的一个元素。@brian->我在ruby中也做过类似的事情,但正如我所说的,问题在于它不是一个子窗口,而是一个新的浏览器会话。1。你能提供一个这个页面的例子吗?互联网上的HTML或类似页面?当你可以处理你的情况时,提出建议会容易得多。2.我从不允许watir webdriver打开新选项卡。通常我会修改链接以在同一页打开它。这是一个肮脏的解决办法,但它有帮助。这取决于。如果它是一个类似于browser.execute_脚本(“参数[0]。目标=”),browser.element(:id,'new_tab'))的链接,则更复杂的情况必须通过修改javascript来解决。这就是为什么如果您提供页面或示例的HTML代码会更好。。这不是一个儿童窗口。。。这是一个新的浏览器会话