Tag: watir webdriver

使用watir-webdriver打开多个线程会导致“连接被拒绝”错误

我有这个简单的例子: require ‘watir-webdriver’ arr = [] sites = [ “www.google.com”, “www.bbc.com”, “www.cnn.com”, “www.gmail.com” ] sites.each do |site| arr << Thread.new { b = Watir::Browser.new :chrome b.goto site puts b.url b.close } end arr.each {|t| t.join} 每次我运行这个脚本,我都会 ruby/2.1.0/net/http.rb:879:in `initialize’: Connection refused – connect(2) for “127.0.0.1” port 9517 (Errno::ECONNREFUSED) 或者其中一个浏览器在至少其中一个线程上意外关闭。 另一方面,如果我在每个循环周期结束时设置sleep 2 ,一切运行顺利! 知道为什么会这样吗? 必须与理解线程如何工作有关…

selenium滚动元素进入(中心)视图

当一个元素与selenium不在视图中并且试图与它进行交互时,selenium通常会隐式地将元素滚动到视图中。 这很棒,但令人讨厌的是它通常会将元素放入视图中。 我的意思是,如果元素在窗口下方,它将向下滚动,直到元素刚好接近窗口边缘。 通常这很好,但是当在带有边框的网站上工作时,这将导致许多这类错误 Selenium::WebDriver::Error::UnknownError: unknown error: Element is not clickable at point (438, 747). Other element would receive the click: … 因为通常网页的边框位于其上方,但无论如何都会尝试单击该元素。 无论如何处理这个? 也许是在视线外时自动将元素移动到屏幕中心? 我正在考虑通过ruby修补猴子。

我如何在Watir中模拟私人浏览体验? (selenium)

Watir是一款基于Selenium的黑盒测试工具,可以在浏览器上自动执行任务。 我希望能够打开一个处于隐私浏览模式的Watir :: Browser.new。 谢谢

如何使用Watir :: Waiter :: wait_until强制Chrome等待?

我试图告诉我的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 […]

处理在keyup事件上发生的javascript弹出窗口

我在HTML页面上有一个文本字段,用于检查您是否输入了1到365之间的值。如果用户输入的值无效,如非数字字符或不在该范围内的值,则显示弹出。 我在watir wiki上看到有一个select_no_wait方法,用于在从列表中选择无效值时关闭弹出窗口。 处理keyup事件时弹出窗口的好方法是什么? 我是否需要按照select_no_wait方法的实现方式继续进行,或者我们是否可以启动一个不同的进程来解除调用set方法时可能出现的弹出窗口。 在Javascript中带有validate函数的HTML文件的示例示例如下: var num = 0 function validate(e) { var charPressed = String.fromCharCode(e.keyCode); if(charPressed >= ‘0’ && charPressed<= '9') { num = parseInt(document.getElementById('foo').value); if ((document.getElementById('foo').value).length 365 || num==0)) alert (“Values can only be from to 1 to 365”); } else { alert(“Invalid character entered”); document.getElementById(‘foo’).value = “”; } } Sample 我真的很感激关于这个问题的任何指示。 […]