Tag: watir webdriver

如何在Watir-WebDriver中关闭PhantomJS的日志记录?

我在我的ruby(1.8)watir代码中看到了很多PhantomJS的日志信息,即INFO消息。 我该如何关闭它? 我从谷歌搜索获得了Java代码,但没有得到ruby代码。 Java PhantomJSDriver禁用控制台中的所有日志 PhantomJS is launching GhostDriver… [INFO – 2015-01-27T10:00:00.000Z] GhostDriver – Main – running on port 8910 [INFO – 2015-01-27T10:00:00.000Z] Session [30344df0-a7de-11e4-9220-5bf7aac4a098] – _decorateNewWindow – page.settings: {“XSSAuditingEnabled”:false,”javascriptCanCloseWindows”:true,”javascriptCanOpenWindows”:true,”javascriptEnabled”:true,”loadImages”:true,”localToRemoteUrlAccessEnabled”:false,”userAgent”:”Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.1 Sa fari/534.34″,”webSecurityEnabled”:true} [INFO – 2015-01-27T10:00:00.000Z] Session [30344df0-a7de-11e4-9220-5bf7aac4a098] – page.customHeaders: – {} [INFO – 2015-01-27T10:00:00.000Z] Session [30344df0-a7de-11e4-9220-5bf7aac4a098] […]

使用Watir访问订单列表中的列表项的元素

我试图点击订购商品列表中的链接。 该列表是观看次数最多的video的顺序。 我只是想选择第一个列表项,以便broswer将导航到href。 现在,我有 $website.element(:class => “gs-c-promo-heading nw-o-link gs-o-bullet__text gs-o-faux-block-link__overlay-link gel-pica-bold gs-u-pl@xs”).click 哪个类似于另一行代码我必须选择顶级故事,工作正常。 任何想法为什么这不起作用? 另外,我如何获取此有序列表中的所有项目并打印出每个链接文本?

如何不等Watir-Webdriver的东西

所以我正在写一个watir-webdriver脚本,我的应用程序正在使用javascript来呈现我想要与之交互的模态窗口。 当我单击显示模态窗口的元素时,watir-webdriver只是坐在那里直到它最终超时,我在控制台窗口看到Timeout :: Error。 这是在尝试与新窗口进行交互之前。 我假设它正在调查DOM进行一些更改而没有得到它,我怎么告诉它继续前进而不等待?

设置一个包含JQuery掩码的文本字段

使用watir-webdriver,我试图设置文本字段的值。 browser.text_field(:id, “phoneNumbers_value_input”).set(“5555551234”) 当我运行该命令时,我可以看到watir找到了该字段,因为光标在该字段上设置但是没有输入文本。 我也尝试过send_keys和append命令,但似乎没有任何工作。 这些方法不会抛出exception。 我在这个字段和页面上的其他字段之间找到的唯一区别(一切正常)是它上面有这个JQuery掩码。 $(selector).mask(“(999) 999-9999”); 有关如何设置文本字段的任何想法? 编辑: 一些更多的Javascript: selector = ‘#’ + id(field.id) + ‘_input’; if (field.format == ‘phone’) { $(selector).mask(“(999) 999-9999”); } 该字段的HTML: phone  

如何处理无法加载并继续在Watir-Webdriver中测试的页面

我已经找到了其他问题的答案,但我找不到一个。 我的问题是我需要测试一些结果,但是当我点击没有加载页面的Url时,我的脚本会一直失败。 以下Url无法加载。 当此Url未加载时,我想继续我的测试。 http://www.mycounciltax.org.uk/results?postcode=WC1N1DF&search=Search 我试过用: begin Timeout::timeout(30) do //enter part that is hanging end end 然而,脚本只是退出。 下面是我正在使用的完整脚本。 脚本将超时并退出…. browser.goto “http://www.mycounciltax.org.uk/results?postcode=WC1N1DF&search=Search” 有关如何允许脚本继续(绕过此Url的测试)并转到下一个脚本的任何想法? require “watir-webdriver” browser = Watir::Browser.new :ff browser.goto “http://www.mycounciltax.org.uk/results?postcode=cv5+6bz&search=Search” content = browser.table.trs.collect {|tr| [tr[0].text, tr[1].text, tr[2].text]} require ‘win32ole’ application = WIN32OLE.new(‘Excel.Application’) application.visible = TRUE workbook = application.Workbooks.Add(); worksheet = workbook.Worksheets(1); worksheet.visible row = 1; […]

无法访问iframe中的文本字段

我正在尝试使用Watir-Webdriver自动化测试脚本。 在编写脚本时,我需要填写登录详细信息。 现在它将在一个简单的text_field中,我知道语法,它会更容易。 但是,当我检查该页面上的元素时,我看到以下内容: #document 所以,正如我所看到的,Email字段位于table – > cell内。 所以我无法使用Watir访问它。 我试过这样的: b.text_field(:id,’lid’).set ‘my value’ 有人可以帮忙吗?

watir浏览器对象可以在以后的Ruby进程中重用吗?

所以,让我们说经常运行一个脚本来打开一个浏览器并做网络事情: require ‘watir-webdriver’ $browser = Watir::Browser.new(:firefox, :profile => “botmode”) => # 它可以使用browser.close优雅地结束,或者它可能会更快崩溃并留下需要大量内存的Firefox进程,直到它们累积并使服务器慢速爬行时才会被忽视。 我的问题有两个: 什么是一个好的做法,以确保即使在任何导致立即错误退出的脚本失败的情况下,子进程将始终被清理(我已经有许多短的begin-rescue-end块用于其他无关的小测试) 更重要的是,我可以简单地记住这个Watir :: Browser:0x7fc97b06f558对象地址或PID,并在一个全新的Ruby进程中将其重新分配给另一个$ browser变量,例如irb? 即,webdriver上的孤立浏览器可以在同一台机器上使用watir-webdriver在其他程序中重新附加? 从irb我可以进入并重新连接到崩溃的Ruby脚本留下的浏览器,检查它所在的网站,检查出错的地方,哪些元素与预期不同等等。 后者的另一个非常有利的用途是避免每天可能有数百个浏览器启动和关闭的开销……最好将一个活着作为一个守护进程。 第一次运行将尝试使用我专门准备的botmode配置文件重用以前的浏览器对象,否则创建一个。 然后我故意不在我的脚本末尾调用$ browser.close。 如果没有其他的东西我在工作中杀死Xvfb:99显示FF在一天结束时运行(无论如何,如果仍在运行,FF别无选择,只能死掉它)。 是的我知道Selenium独立jar,但也试图避免那个java服务足迹。 如果这是一个基本的Ruby问题,请道歉。 我只是不确定如何表达它并继续获得不相关的搜索结果。

在Ruby中作为NON-root用户在Xvfb中运行Selenium :: WebDriver :: Firefox

我正在尝试使用ruby脚本进行一些无头测试。 基本上我在显示器上执行Xvfb:1,然后使用watir-webdriver启动Watir::Browser.new(:firefox) 。 如果以root身份运行脚本,这很有用 – 我可以运行x11vnc并观察脚本执行浏览器并与之交互。 问题是,我需要能够从Rails应用程序调用这个ruby脚本,而不是以root身份运行它…如果我尝试以普通用户的身份从命令行运行脚本,Xvfb会启动:1像往常一样,Watir不会启动浏览器…它最终会在60秒后超时。 通过VNC连接显示带有鼠标光标的黑屏。 我可以从命令行中完成所有操作 – 启动Xvfb,然后启动firefox –display=:1并启动浏览器,因此它必须是Selenium问题,对吧? Nutshell:Selenium / Webdriver拒绝在Xvfb中启动浏览器,除非我以root身份运行脚本。

的Watir。 滚动到页面的某个点

我试图在网站上自动进行在线调查,但每次都会出现此错误: Selenium::WebDriver::Error::UnknownError: unknown error: Element is not clickable at point (561, 864). Other element would receive the click: a id=”habla_oplink_a” class=”habla_oplink_a_normal hbl_pal_header_font_size hbl_pal_title_fg ” 我需要了解的是如何滚动到页面的某个点,以便我的脚本可以恢复填写页面上的调查。 这是我的代码,它设法填写调查的一部分,但是当它到达浏览器内部不在视图中的行(需要用户向下滚动到的行)时失败: buttons = browser.elements(:class => “assessment-choice”) buttons.each do |button| button.click end 我还希望能够更改我的代码,以便它只选择一个特定的选项,但页面上的HTML不是很友好。 这是我正在查看的网页: https : //staging2.clearfit.com/assessment/assessment/95867fb272df436352a0bd5fbdd 调查中其中一个选项的HTML: StronglyAgree

停止加载页面watir-webdriver

有没有办法在firefox上停止使用watir-webdriver加载页面? 或者,即使页面仍在加载,有没有办法在我的脚本中强制执行某些操作? 在我的脚本中,网站将挂起,脚本最终会超时。