自上周发布chrome(34.0.1847.116)以来,我在使用watir-webdriver运行自动化测试时收到了"禁用开发人员模式扩展".
这似乎是令人反感的延伸,但对我来说这是一个潜在危险的扩展,因为它是由chromedriver使用的.
任何已找到此修复程序的人,因为我无法回滚到以前的版本或找到旧版本的安装程序回滚到这对我的测试造成严重破坏.
google-chrome google-chrome-extension watir-webdriver selenium-chromedriver
我有以下代码
browser.link(:text => 'Generate Report').click
browser.radio(:value => 'byTotalValue').wait_until_present(180)
Run Code Online (Sandbox Code Playgroud)
请求生成报告,然后通过在报告页面上查找元素来等待报告.报告最多可能需要2分钟才能显示.
发生的事情是Timeout :: 60秒后从click方法引发错误.我怀疑Watir-Webdriver在click方法中实现了某种形式的等待页面加载,但我没有看到调整值的方法.
任何帮助理解这一点将不胜感激.
使用watir-webdriver调用以下内容时,如何指定打开的浏览器窗口的大小?
browser = Watir::Browser.new(:firefox)
Run Code Online (Sandbox Code Playgroud) 使用watir-webdriver,如何在点击链接后等待页面加载?
目前我正在做的事情:
sleep n
Run Code Online (Sandbox Code Playgroud)
但这并不理想,因为页面响应变化很大.
是否有方法来测试页面是否准备就绪或页面中是否存在某个元素.我理解在正常的watir gem中有Watir::Waiter.wait_until
或类似的东西,但我在webdriver版本中看不到这一点.
我试图告诉我的watir脚本等待ajax注入的登录框打开.我正在使用watir-webdriver,并在Chrome中进行测试.我无法开始wait_until
工作,如下面(简化)脚本中所评论的那样.
require "rubygems"
require "watir-webdriver"
b = Watir::Browser.new(:chrome)
site = "www.example.com"
b.goto site
puts "Click on Sign In button"
b.link(:id, 'btnLogin').click
puts "Waiting for the username/password dialog to show up"
# Below line does *not* work
# Throws this error: "uninitialized constant Watir::Waiter (NameError)"
Watir::Waiter::wait_until { b.text_field(:id, 'username').exists? }
# Below line does *not* work
# Throws this error: "undefined method `wait_until' for main:Object (NoMethodError)"
wait_until { b.text_field(:id, 'username').exists? }
# Below line *does* work, but I don't …
Run Code Online (Sandbox Code Playgroud) 我想将一个元素拖放到另一个元素的位置,从watir-webdriver脚本中触发.
通过"拖放",我的意思是拿起一个可拖动的元素并将其释放到另一个元素上."可能"是指可以从watir-webdriver脚本执行的任何拖放方法.这包括代码片段,第三方宝石等.
据我所知,拖放是核心watir-webdriver的功能请求(在询问时),所以我(原则上)寻找替代方案.
更新拖放现在是核心watir-webdriver的一部分(从0.5.0开始,我相信)
更新2对于那些寻求启蒙的人来说,这是可能的(从版本0.5.0开始):
a = browser.div(:id => "draggable")
b = browser.div(:id => "droppable")
a.drag_and_drop_on b
Run Code Online (Sandbox Code Playgroud)
和
a = browser.div(:id => "draggable")
a.drag_and_drop_by 100, -200
Run Code Online (Sandbox Code Playgroud) 我想知道watir-webdriver是否能够记录任何控制台错误的输出?这相当于在浏览器中手动打开控制台并在页面加载时查看JS错误.我可以通过watir-webdriver和日志/错误捕获这个吗?
我有一个这样的页面:
<input type="button" onclick="confirm('confirm popup');" value="click" />
Run Code Online (Sandbox Code Playgroud)
当我转到页面并单击链接时:
require "watir-webdriver"
browser = Watir::Browser.new
browser.goto "page.html"
browser.button.click
Run Code Online (Sandbox Code Playgroud)
确认弹出窗口出现.我可以解雇它:
require "watir-webdriver/extensions/alerts"
browser.confirm(true) {browser.button(:value => 'Confirm').click}
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
[remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/command_processor.js:10302:in `unknown': Modal dialog present (Selenium::WebDriver::Error::UnhandledAlertError)
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/dispatcher.js:85:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/dispatcher.js:516:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/dispatcher.js:351:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/webdriverserver.js:47:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/httpd.js:1935:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/httpd.js:2261:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/httpd.js:1168:in `unknown'
from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/fxdriver@googlecode.com/components/httpd.js:1616:in `unknown' …
Run Code Online (Sandbox Code Playgroud) 我需要一些看似简单但让我感到困惑的事情的帮助.尝试编写一些模糊匹配方法,以处理根据需要计算的值与实际可从选择列表中获得的值之间的格式差异.
值(选项执行价格)始终是计算的Float like 85.0
或Int.
数组包含字符串形式的数字,在任何一个增量中都是不可预测的,或者它们是否会显示为舍入到某个小数(包括额外的零5.50
)或没有小数(如85
),例如:
select_list = ["77.5", "80", "82.5", "85", "87.5", "90", "95", "100", "105"]
Run Code Online (Sandbox Code Playgroud)
我不确定如何编写一行或两行代码,这些代码将返回数组中出现的最接近的匹配元素(按数字值).例如,如果select_list.contains? 85.0
返回 "85"
实际上,选择选项来自Watir::Webdriver browser.select_list(:id, "lstStrike0_1")
HTML对象,其可见文本(不是HTML值)是那些数字; 也许有更直接的方式来调用 browser.select_list(:id, "lstStrike0_1").select X
Watir如何将所有这些选择转换为Ruby数组?
当一个元素与selenium不在视图中并且试图与它进行交互时,selenium通常会隐式地将元素滚动到视图中.这很好,除了令人讨厌的是它通常将元素放入视图中.我的意思是,如果元素在窗口下方,它将向下滚动,直到元素刚好接近窗口边缘.
通常这很好,但是当在一个带有边框的网站上工作时,这将导致许多这类错误
Selenium::WebDriver::Error::UnknownError:
unknown error: Element is not clickable at point (438, 747). Other element would receive the click: <body>...</body>
Run Code Online (Sandbox Code Playgroud)
因为网页的边框通常都在它上面,但无论如何都会尝试点击该元素.无论如何处理这个?也许在视线外时自动将元素移动到屏幕中心?我正在考虑通过红宝石修补猴子.
watir-webdriver ×10
watir ×7
ruby ×3
webdriver ×2
confirm ×1
firewatir ×1
javascript ×1
popup ×1
safariwatir ×1
web-testing ×1