Tag: webdriver

如何为Chrome构建远程Webdriver

我正在尝试对Chrome运行我的Selenium测试。 当我在本地初始化驱动程序时: @driver = Selenium::WebDriver.for( :chrome ) 一切正常(我已经将Chrome二进制文件放在我的PATH上)但是当我尝试远程启动时: @driver = Selenium::WebDriver.for(:remote, :url => ‘http://’ + SELENIUM_HOST + port + webdriver_hub, :desired_capabilities => :chrome) 我收到以下错误 Selenium :: WebDriver :: Error :: UnhandledError:chromedriver可执行文件的路径必须由webdriver.chrome.driver系统属性设置; 有关详细信息,请参阅http://code.google.com/p/selenium/wiki/ChromeDriver 。 最新版本可以从http://code.google.com/p/chromium/downloads/list下载(java.lang.IllegalStateException) 我在那里有点困惑 – 我究竟应该如何设置这个系统属性? 我发现这段代码用Java编写: DesiredCapabilities caps = DesiredCapabilities.chrome(); caps.setJavascriptEnabled(true); caps.setCapability(“chrome.binary”, “/path/to/where/chrome/is/installed/chrome.exe”); System.setProperty(“webdriver.chrome.driver”,”/path/to/where/you/ve/put/chromedriver.exe”); ChromeDriver driver = new ChromeDriver(caps); 但我的测试是用Ruby编写的。 RubyBindings没有谈论这个问题http://code.google.com/p/selenium/wiki/RubyBindings

带Ruby的PageObject – 在文本字段中设置文本只能在主文件中使用

我正在自动化一个网站,该网站的页面包含一个单选按钮选择的选项列表。 选择其中一个无线电时,会显示文本字段和选择列表。 我创建了一个文件(test_contracting.rb),它是我执行测试的文件(ruby test_contracting.rb)和其他一些代表我的页面的类。 在我的类ContractPage上,我有以下元素声明: checkbox(:option_sub_domain, :id => “option_sub_domain”) text_field(:domain, :id => “domain_text”) select_list(:tld, :id => “domain_tld”) 我在ContractPage中创建了一个方法来设置域的配置,如下所示: def configure_domain(config={}) check_option_sub_domain domain = config[:domain] tld = config[:tld] end 当我从test_contracting.rb调用configure_domain方法时,它会选择单选按钮,但它不会使用值填充该字段。 参数正确地进入方法。 我用“puts”检查了它。 即使我将params更改为像“bla”这样的一般字符串,它也不起作用。 令人讨厌的一点是,如果在test_contracting.rb上我调用完全相同的组件,它就可以工作。 my_page_instance = ContractPage.new(browser) my_page_instance.domain = “bla” my_page_instance.tld = “.com” 我发现工作的是在configure_domain方法中,实现以下内容: domain_element.value = config[:domain] tld_element.send_keys config[:locaweb_domain] 然后它奏效了。 我可以在这里找到我作为参考使用的PageObjects模块的文档: http : //rubydoc.info/github/cheezy/page-object/master/PageObject/Accessors#select_list-instance_method 你们有没有解释为什么pageobject自动生成的方法设置对象的值在这个范围/上下文中不起作用? 顺便说一句,一位朋友用Java尝试了同样的事情,但也失败了。

如何在执行操作之前让Selenium / Ruby bot等待?

我正在构建一个点击元素的Selenium / Ruby Web机器人。 问题是,在僵尸程序决定无法找到该元素之前,有时没有足够的时间加载页面。 在执行操作之前让Selenium等待的Ruby方法是什么? 我更喜欢明确的等待,但我也很好地隐瞒等待。 我试着使用wait.until方法: require “selenium-webdriver” require “nokogiri” driver = Selenium::WebDriver.for :chrome wait = Selenium::WebDriver::Wait.new(:timeout => 15) driver.navigate.to “http://google.com” driver.wait.until.find_element(:class, “gb_P”).click 但是我收到以下错误: Undefined method ‘wait’ for 我也尝试过: require “watir-webdriver/wait” … driver.find_element(:class, “gb_P”).wait_until.click 但这也给了我一个未定义的方法错误: undefined method `when_present’ for #

Selenium2 WebDriver Ruby =>如何点击隐藏的链接

我在Ruby上使用Selenium 2 WebDriver。 如何点击隐藏的链接,用css(显示:无)? 链接是子菜单,鼠标hover在菜单上时可见。 //编辑: Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {“method”:”link text”,”selector”:”submenu2″} 我将’:id’更改为’:link_text’,因为子菜单没有id。 导航: – menu1 – <– begin display:none – submenu1 + <–end submenu 当鼠标hover菜单时,您可以看到子菜单。 以前webdriver的子菜单不存在。 跟随代码我看到FF左下方menu1中的链接,但是子菜单没有打开并且因超时错误而中断。 menu = @driver.find_element(:link_text => “menu”) @driver.action.move_to(menu).perform wait.until { @driver.find_element(:link_text => “submenu”).click }

如何在运行selenium ruby​​ webdriver脚本时从命令提示符ruby窗口输出文件时导出结果

目前,我正在我的测试套件中运行所有selenium脚本(由Selenium Ruby Webdriver编写),在“使用Ruby启动命令提示符”终端中使用rake gem。 要做到这一点,我必须创建一个名为“rakefile.rb”的文件,其中包含以下内容,并在我的终端中调用“rake”:(我在之前的post中根据一个人的指南了解这些知识)。 task :default do FileList[‘file*.rb’].each { |file| ruby file } end 但是,如果执行时有一个脚本失败,则将终止运行。 请帮忙指导我如何修改“rakefile.rb”,这样如果有一个脚本失败,系统会忽略它并继续在我的测试套件中运行下一个脚本? 另外,您可以建议我在将脚本运行到一个输出文件时编写所有结果吗?或者将每个脚本的结果放在每个输出文件中,输出文件将显示脚本列表失败。 任何帮助表示赞赏。 非常感谢。

Selenium Webdriver获取cookie值

我想获取一个cookie值,但不断收到的错误 我在打电话 @browser.cookie_named(“configsession”).each do |cookie| puts cookie[:name] 我有什么事我做错了吗?

你如何在selenium-webdriver中获得窗口标题,ID和名称?

我试图从selenium-webdriver (ruby)实现以下方法 get_all_window_ids get_all_window_titles get_all_window_names 我运行Selenium IDE并将我的脚本导出到Ruby Test :: Unit。 保存为.rb 使用Aptana Studio 3打开我的脚本进行编辑 初始代码段如下: require “rubygems” require “selenium-webdriver” require “test/unit” class SwitchToPopup3 < Test::Unit::TestCase def setup @driver = Selenium::WebDriver.for :firefox @base_url = (URL of my test website) @driver.manage.timeouts.implicit_wait = 30 @verification_errors = [] end def teardown @driver.quit assert_equal [], @verification_errors end def test_switch_to_popup3 . […]

无法使用ruby selenium webdriver连接到浏览器

我尝试使用ruby selenium webdriver运行一些基本的自动化测试。 相同的代码在我的家用计算机上完美运行,但在代理后面的工作计算机上失败(不需要身份validation)。 driver = Selenium :: WebDriver.for:firefox,:profile =>’default’ 我得到的错误是: C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.24.0/lib/selenium/webdriver/remote/http/common.rb:66:in `create_response’: unexpected response, code= 403, content-type=”text/html” (Selenium::WebDriver::Error::WebDriverError) ERROR: The requested URL could not be retrieved ERROR The requested URL could not be retrieved While trying to retrieve the URL: http://127.0.0.1:7055/hub/session The following error was encountered: Access Denied. Access control configuration prevents your request […]

使用WebDriver时可以忽略JavaScriptexception(HtmlUnit,Ruby绑定)

当我加载页面时,HtmlUnit抛出exception并导致我的测试崩溃 caps = Selenium::WebDriver::Remote::Capabilities.htmlunit(:javascript_enabled => true) driver = Selenium::WebDriver.for(:remote, :desired_capabilities => caps) driver.navigate.то url ReferenceError:未定义“x”。 (net.sourceforge.htmlunit.corejs.javascript.EcmaError) 如果我使用Firefox驱动程序,则不会抛出exception。 caps = Selenium::WebDriver::Remote::Capabilities.firefox 或者为HtmlUnit驱动程序禁用JavaScript caps = Selenium::WebDriver::Remote::Capabilities.htmlunit(:javascript_enabled => false) 我无法更改测试页面上的代码并修复问题,因此我需要忽略它或以任何方式使用Firefox JavaScript Engine而不是标准的HtmlUnit JavaScript引擎。 是否可以在不更改测试页代码的情况下解决我的问题? 更新:尝试Capybara + WebKit作为Selenium + HtmlUnit的替代品 – 工作正常,没有错误。 但我还是想在不改变框架的情况下解决问题。

使用Selenium Webdriver for Ruby进行HTML5拖放

是否有任何工作可以使用Selenium Webdriver和Ruby一起使用HTML5拖放工具? 我正在使用Selenium-Webdriver 2.20.0和Ruby 1.9.2 这是一个重现问题的简单测试: require “selenium-webdriver” require “test/unit” class Html5DragAndDropTest < Test::Unit::TestCase def setup @driver = Selenium::WebDriver.for :firefox @driver.manage.timeouts.implicit_wait = 30 end def teardown @driver.quit end def test_html5_drag_and_drop @driver.get("http://html5demos.com/drag") target = @driver.find_element(:id, "one") source = @driver.find_element(:id, "bin") @driver.action.drag_and_drop(target, source).perform assert target.displayed? == false end end