【问题标题】:Watir WebDriver browser object loses current window upon opening new tab (FIREFOX)Watir WebDriver 浏览器对象在打开新选项卡时丢失当前窗口 (FIREFOX)
【发布时间】:2016-04-07 20:13:34
【问题描述】:

我想测试单击同一页面上的多个链接,但随后能够切换活动选项卡。但是,一旦我单击带有 target=_blank 的链接,或者如果我故意打开一个新选项卡,它会将我引导到一个新选项卡,而我无法返回旧选项卡。

注意:我使用 Firefox 进行测试。 Chrome 确实可以正常工作并提供 2 个窗口数

这是一个简单的 IRB sn-p 来说明我的意思:

2.2.1 :001 > require 'watir-webdriver'
 => true
2.2.1 :002 > b = Watir::Browser.new :firefox, :profile => 'default'
 => #<Watir::Browser:0x..fa8c7116334ddce82 url="about:blank" title="">
2.2.1 :003 > b.goto 'amazon.com'
 => "http://amazon.com"
2.2.1 :004 > b.a(:class => 'nav-logo-link').click(:command, :shift)
 => nil
2.2.1 :005 > b.windows.count
 => 1

我看到打开了两个选项卡,(:command, :shift) 选项是为了这样做。但是如果浏览器对象只有一个窗口,我该如何返回第一个?

似乎我找不到任何有同样问题的人,所以可能是 Firefox 问题或我的环境?

在 Mac OSX、FF 版本 44、Ruby 2.2.1、watir-webdriver 0.9.1 上运行

【问题讨论】:

  • 除非您由亚马逊支付费用来测试他们的网站,否则您不应该针对他们的网站进行任何浏览器自动化,因为这违反了他们的使用条件。特别是This license does not include... ...any derivative use of any Amazon Service or its contents; any downloading, copying, or other use of account information for the benefit of any third party; or any use of data mining, robots, or similar data gathering and extraction tools. ——任何浏览器自动化工具,都适合“机器人或类似”条款。
  • ...我只是用亚马逊作为一个简单的例子,因为我正在测试的网站还没有上线。我想我得选择一个不同的网站来举个例子,以供将来参考lol
  • 我不太明白你在这里问什么,但值得在这里查看我的 Windows 处理答案:stackoverflow.com/questions/16222446/…
  • 我澄清了这个问题,并确实发现 Chrome 在单击时确实会将所有窗口保留在浏览器对象中。 @SveatoslavCircel 感谢您发布那篇文章,因为这基本上是我的问题,为什么您的切换标签的答案在 Firefox 中对我不起作用?
  • 不知道,作为一种解决方法,您可以实例化另一个浏览器实例,在那里做一些事情,然后关闭它并返回到初始实例。

标签: ruby watir watir-webdriver


【解决方案1】:

看看这个:

require 'watir-webdriver'
b = Watir::Browser.new
b.goto "amazon.com"
link = b.a(:class => 'nav-logo-link')
b.execute_script("return arguments[0].target = '_blank'", link)
link.click
puts b.windows.count

主要思想不是尝试以特殊方式使用链接来获得两个窗口,而是修改链接以自然方式获得两个窗口。

【讨论】:

  • 这似乎解决了部分问题,我喜欢这种解决方法。仍然很想知道这是否是 Firefox 驱动程序的已知错误。此外,该驱动程序的 browser.link.open_newwindow 的 firefox 配置似乎默认为 2,它仍将 target='_blank' 视为新窗口而不是选项卡。你知道如何改变这个进行测试吗?没什么大不了的,但是当使用标签而不是一堆窗口上下移动时,测试看起来更干净
  • 好吧。我以前使用过上面的方法,但现在没有。秘密是我从不使用浏览器窗口\标签。当需要打开一堆链接时,我会将hrefs存储到一个数组中以逐个打开它。所以我不知道如何更清楚地做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
  • 2014-08-29
  • 2015-03-25
  • 1970-01-01
相关资源
最近更新 更多