【问题标题】:Watir-webdriver: Script working on Firefox but failing on Chrome or Opera. why?Watir-webdriver:脚本在 Firefox 上运行,但在 Chrome 或 Opera 上失败。为什么?
【发布时间】:2012-05-03 04:20:48
【问题描述】:

我正在 ark.com 上对此进行测试..

以下代码非常适合带有 watir-webdriver 的 firefox,但分别在 google chrome 和 opera 浏览器中给我一个错误。

代码如下:

require "rubygems"
require "watir-webdriver"

b = Watir::Browser.new :ff
b.goto "http://www.ark.com"

# Signing in
7.times{b.link(:text, "Sign in").flash}
sleep 3
b.link(:text, "Sign in").click
sleep 3
# Popup
b.text_field(:name, "login_email").set "email@gmail.com"
b.send_keys :tab
b.text_field(:name, "login_password").set "password"
b.button(:value, "Sign in").click
puts b.title

如下更改代码会给我错误:

b = Watir::Browser.new :chrome 

b = Watir::Browser.new :opera

我收到以下错误消息:

You may only interact with visible elements (Selenium::WebDriver::Error::ElementNotVisibleError)

我尝试了以下堆栈溢出建议,但无济于事How do I use Watir::Waiter::wait_until to force Chrome to wait?

另外,我的代码在 firefox 中可以完美运行,但在其他浏览器中却不行,为什么会出现这种情况? 任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • 它说什么元素不可见?当您尝试在其他 Stackoverflow 问题中找到的 .when_present 等方法时,您是否也会遇到不同的错误?
  • 代码中的哪一行产生了错误?

标签: ruby automated-tests watir watir-webdriver


【解决方案1】:

正如其他一些posts 中提到的,您可以使用以下内容全屏浏览浏览器:

screen_width = b.execute_script("return screen.width;")
screen_height = b.execute_script("return screen.height;")
b.driver.manage.window.resize_to(screen_width,screen_height)
b.driver.manage.window.move_to(0,0)

然后就像 anonygoose 说的,登录链接应该在那里(假设你的屏幕不是太小)。

【讨论】:

  • 非常感谢!这解决了它!
  • 唯一的问题是opera webdriver还不支持.window操作……但我想它最终会的。
  • 已接受答案。 @ChuckvanderLinden,您似乎是 StackOverflow Watir 之神!大声笑。
【解决方案2】:

在 Chrome 和 Firefox 中查看该网站,我会说它存在某种错误或不需要的功能。

如果您使用的网络浏览器宽度太窄,则注册按钮会完全消失。

我会说这就是为什么你会收到奇怪的错误。

通过在 Chrome 浏览器启动后立即将其最大化来对此进行测试。根据我的测试,这允许找到注册按钮。

我不确定默认情况下最大化任一浏览器的方法,但也许这里的其他人会知道或能够建议一种方法。

【讨论】:

    猜你喜欢
    • 2021-07-22
    • 1970-01-01
    • 2012-05-31
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2019-09-02
    • 2023-01-04
    相关资源
    最近更新 更多