Tag: watir

提交表单后Watir文本框输入不存在(重置为上一个文本框输入)

我在这个网站上做了一些搜索: http : //onthemap.ces.census.gov/ 这是我的代码在错误之前的设置: sample_address = “1600 Amphitheatre Pkwy, Mountain View, CA 94043” b= Watir::Browser.new :chrome b.goto “http://onthemap.ces.census.gov” b.text_field(:id => “search_value”).set sample_address b.span(:id => “search_button_label”).click Watir::Wait.until { ba(:text => “Geocoder Results”).exists? } address_selector = sample_address.split(” “)[0..1].join(” “) ba(:text => /#{address_selector}/).click Watir::Wait.until { b.div(:class => “olPopup”).exists? } b.span(:text => Selection”).click 所以现在我要尝试将2英里插入“简单半径”框,其默认值为0.25 b.text_field(:name => “simple_r”).set 2.0 […]

开始使用Ruby,Watir和Ruby Mine?

我想自动测试电子商务网站。 我安装了Ruby,Watir,Gems和Ruby Mine。 虽然我玩RubyMine但我无法想象如何开始编写一个简单的脚本: 如何使用RubyMine开始编写简单的脚本? 我创建了一个项目。 你下一步怎么做? 我现在必须创建一个rspec文件吗? 并且可能会搜索示例程序并运行它? 有人可以给我一个打开网站的样本,也许点击一个链接,这样我就能看到它在运行吗? 我很感激简单的文档可以帮助我。

Watir帮助:click-no-wait和execute_script无法按预期工作

使用ruby的Watir gem,我试图点击一个打开javascript弹出窗口的按钮,然后点击弹出窗口上的’ok’,我似乎无法做到这一点。 按钮位于框架中的框架中。 我已经广泛搜索并阅读有关javascript弹出窗口的Watir wiki条目但没有任何效果。 我认为这是因为execute_script和click_no_wait没有按预期工作。 例如,以下命令: @browser.execute_script(‘window.alert = function() {}’) @browser.execute_script(‘alert(“hello”)’) 创建一个javascript弹出窗口,上面写着“hello”而不是没有做任何事情的预期行为。 命令: @browser.button(:value, ‘Submit’).click 单击创建javascript弹出窗口的按钮。 然后该脚本挂起,直到我在弹出窗口中手动单击“确定”。 命令: @browser.button(:value, ‘Submit’).click_no_wait 不单击按钮(或者单击按钮并且不触发onclick事件)。 我也尝试过: Timeout::timeout(1) { @browser.button(:value, ‘Submit’).click } 和 Thread.new { @browser.button(:value, ‘Submit’).click } 但Timeout从不抛出exception,导致ruby挂起,直到我在弹出窗口中手动单击’ok’,并且当我在新线程中运行它时Watir不会单击。 有人能帮助或提供解决方案吗? 编辑:问题是在@ browser.button.click之后,脚本会挂起,直到弹出窗口关闭。 @ browser.alert.ok成功关闭弹出窗口,但单击按钮后脚本无法执行@ browser.alert.ok,因为它会一直挂起,直到弹出窗口关闭。 这个catch-22应该由click_no_wait解决,但是click_no_wait没有点击。 系统信息: Windows 7企业版64位 Internet Explorer版本9.0.12 的Watir-4.0.2-x86架构的mingw32 ruby 1.9.3p286(2012-10-12)[i386-mingw32]

Watir:通过启动chrome浏览器有时会出现Net :: ReadTimeout错误

我只是使用watir脚本从服务器下载顺序状态信息。 在大多数情况下它工作正常,但有时我得到一个Net :: ReadTimeout错误。 我不知道为什么? 码: require “rubygems” require “watir” Watir.default_timeout = 180 # seconds – default is 60 prefs = { :download => { :prompt_for_download => false, :default_directory => path } } browser = Watir::Browser.new :chrome, :switches => %w[–no-sandbox], :prefs => prefs browser.goto ‘https://www…’ … 错误信息: /usr/lib/ruby/2.3.0/net/protocol.rb:158:in `rbuf_fill’: Net::ReadTimeout (Net::ReadTimeout) from /usr/lib/ruby/2.3.0/net/protocol.rb:136:in `readuntil’ from […]

使用Ruby中的Watir填充text_field时的编码问题

我正在使用Watir填写一个text_field,其中包含我之前使用其他程序编写的html代码。 我正在转移的网站内容的语言是德语,因此涉及一些特殊字符,这些字符在英语字母表中不存在。 这些字符在html文件中正确显示,但是当转移到Joomla安装的text_field(我用这个程序将网站转移到Joomla)时,特殊字符无法正确显示。 由于用户的帮助很大,我已经能够解决以前的问题,并且现在使用以下方法传输内容: browser.text_field(:id => “text”).value=(open(‘my-site.html’) { |f| f.read }) 结果是,特殊字符显示如下: über => ³ber vergißt => vergi▀t wählen => wõhlen geförderter => gef÷rderter 用户猜测它与我正在使用的代码页和编码问题有关。 运行DOS:chcp导致输出850。 他试图解决这个问题的方法如下: require ‘iconv’ browser.text_field(:id => “text”).value=( Iconv.iconv(‘CP850’, ‘ISO-8859-1’, open(‘my-site.html’) { |f| f.read }) ) 不幸的是,这并没有解决问题,特殊字符现在显示为:\ x81ber =übervergi\ xE1t =vergißt,新行显示为\ n 我使用Mechanize抓取了页面,使用以下代码: auszug=page.search (‘/html/body/table/tr/td/table/tr[2]/td/table/tr/td[4]’) outputFile<<auszug 我希望你能以某种方式帮助我,因为我只是一名志愿者,在这里工作,有一点编程经验。 如果我没有在下周运行这个程序(这个编码的东西是唯一真正阻止我的东西),那么我将不得不使用copy + paste手动传输一百页:/ 感谢您花时间和所有的努力! […]

即使元素可见,Watir-webdriver也会抛出’not clickable’错误

我正在尝试使用最新的Watir-Webdriver 0.9.1 , Selenium-Webdriver 2.53.0和Chrome扩展2.21在Ruby中自动化测试。 但是,我测试的网站顶部有静态标题,底部有静态页脚。 因此,由于Watir在单击之前将元素自动滚动到视图中,因此元素将隐藏在静态页眉或静态页脚下。 我不想将desired_capabitlites (ElementScrollBehavior)设置为1或0因为我正在测试的网站可以兼具 – 静态页眉或静态页脚或两者。 因此问题是: 1)为什么Watir会抛出exceptionElement not clickable即使元素可见并存在,也Element not clickable ? 请参阅ruby代码(我已经选择了一个随机的公司网站作为示例)以及下面的结果。 2)如何在不诉诸ElementScrollBehaviour的情况下解决这个问题? Ruby代码: require ‘watir-webdriver’ browser = Watir::Browser.new :chrome begin # Step 1 browser.goto “shop.coles.com.au/online/mobile/national” # Step 2 – click on ‘Full Website’ link at the bottom link = browser.link(text: “Full website”) #check if link exists, present […]

Watir webdriver Errno :: ECONNREFUSED:无法建立连接,因为目标计算机主动拒绝它。 – 连接(2)

更新: 我正在运行下面的代码来执行我的示例测试用例:(Windows 7,Watir 3.0.0,Watir-webdriver-0.6.1) require “watir-webdriver” require ‘test/unit’ class Teste1 $var = Watir::Browser.new :chrome def met1 $var.goto ‘google.com’ $var.text_field(:name, “q”).set ‘sample’ $var.button(:name =>’btnG’).click end end class Teste2 < Test::Unit::TestCase $test = Teste1.new def test_gomet1 $test.met1() end end 浏览器打开但脚本会引发以下错误: test_gomet1(Teste2): Errno::ECONNREFUSED: No connection could be made because the target machine actively refused it. – connect(2) C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:82:in […]

如何使用auth将代理添加到Watir上的ChromeDriver

我在Ruby上使用Watir,它使用Selenium作为其底层框架。 我正在使用ChromeDriver,为了设置代理,我真的这样做了: b = Watir::Browser.new :chrome, :switches => [“–proxy-server=11.1.1.11:3011”] 有时,代理附带用户,密码validation如下: 11.1.1.11:3011:3011:user:pass 但是当我尝试将该字符串放入–proxy-server我收到一个错误。 如何配置ChromeDriver以使用身份validation? 我尝试过其他SO答案中经常提出的格式,即: http://user:pass@11.1.1.11:3011 但那没用。 尝试没有http部分,也没有工作。

var = Watir :: Browser.start’url’之后无法在IRB中使用变量

1.9.3-p327 :001 > require ‘watir-webdriver’ => true 1.9.3-p327 :002 > b = Watir::Browser.new 然后firefox启动,我无能为力。 我的IRB不允许我输入新命令。 尝试了浏览器初始化的不同变体: b = Watir::Browser.new :opera b = Watir::Browser.new :firefox b = Watir::Browser.start ‘url’ 应该出现类似的东西: => #<OperaWatir::Browser:0x1496e57 @active_window=#<OperaWatir::Window:0x1eb1db2 @browser=#>,@driver=# Java::ComOperaCoreSystems::OperaDriver:0xeabd2f>> 但控制台中没有输出。 浏览器关闭60秒后,我得到以下输出: 1.9.3-p327 :002 > b = Watir::Browser.new Selenium::WebDriver::Error::WebDriverError: unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055) 试过chrome,firefox,浏览器打开,但是irb锁定。 操作系统:Ubuntu的 […]

如何通过watir-webdriver获取IE的WIN32OLE句柄?

在Watir中,您可以使用下一个方法获取IE窗口的WIN32OLE句柄。 irb(main):059:0> browser.ie => # 我需要以某种方式获得由watir-webdriver创建的IE的相同返回。 有办法吗? 或者至少有人能指出我挖掘的方向。 我需要这些东西将HTTPwatch插件附加到我的浏览器实例。 以下是HTTPWatch代码的示例。 require ‘watir’ require ‘win32ole’ browser = Watir::Browser.new controller = WIN32OLE.new(‘HttpWatch.Controller’) plugin = controller.IE.Attach(browser.ie) UPD:感谢Justin Ko我有工作代码 require ‘win32ole’ require ‘watir-webdriver’ browser = Watir::Browser.new :ie title = browser.title browser.goto “google.com” length = WIN32OLE.new(‘Shell.Application’).Windows.count – 1 (0..length).each do |i| begin WIN32OLE.new(‘Shell.Application’).Windows(i).Document.Title $ie = WIN32OLE.new(‘Shell.Application’).Windows(i) rescue end end controller […]