Tag: selenium

无法使用Watir绕过不安全的证书警告

我似乎无法忽略使用带有Watir 6.2.0的Firefox驱动程序的任何证书警告。 这是意外的行为,还是我没有正确使用API​​? 示例代码 : require ‘watir’ profile = Selenium::WebDriver::Firefox::Profile.new profile.assume_untrusted_certificate_issuer = false browser = Watir::Browser.new(:firefox, :profile => profile) browser.goto ‘https://self-signed.badssl.com/ 出乎意料的结果 : /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok’: Selenium::WebDriver::Error::UnknownError from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/response.rb:32:in `initialize’ from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/http/common.rb:83:in `new’ from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/http/common.rb:83:in `create_response’ from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/http/default.rb:107:in `request’ from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/http/common.rb:61:in `call’ from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/w3c_bridge.rb:620:in `execute’ from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/w3c_bridge.rb:126:in `get’ from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/common/navigation.rb:32:in `to’ from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/watir-6.2.0/lib/watir/browser.rb:78:in `goto’ from /Users/bshannon/Desktop/test.rb:8:in […]

watir-webdriver在保持浏览器打开的同时更改代理

我在Ruby中使用Watir-Webdriver库来检查一些页面。 我知道我可以使用代理连接 profile = Selenium::WebDriver::Firefox::Profile.new#create a new profile profile.proxy = Selenium::WebDriver::Proxy.new(#create proxy data for in the profile :http => proxyadress, :ftp => nil, :ssl => nil, :no_proxy => nil ) browser = Watir::Browser.new :firefox, :profile => profile#create a browser window with this profile browser.goto “http://www.example.com” browser.close 但是,当想要使用不同的代理多次连接到同一页面时,我必须为每个代理创建一个新的浏览器。 加载(和卸载)浏览器需要相当长的时间。 所以,我的问题: 有没有办法改变,使用ruby中的webdriver,Firefox使用代理地址连接,同时保持浏览器打开?

Selenium 2.0 Webdriver&Ruby,除.text之外的链接元素方法? Navigate.to数组中的链接?

我在将一些样品测试/规格从Watir转换为Selenium时更进一步。 在我的最后一个问题和建议的回复后,我开始使用Selenium 2.0与WebDriver而不是Selenium 1。 有问题的例子涉及将表中的所有链接收集到一个数组中 – 该部分是完整的。 但是,一旦链接在数组中,我可以与它们交互的唯一有意义的方式似乎是.text。 使用@ driver.navigate.to Array [1]在浏览器中显示URL格式错误,link.href或.src不是有效选项。 Watir实现收集了这些链接(用户通过CMS添加的页面),将它们存储在一个数组中,然后逐个访问每个页面,提交一个潜在客户表单。 我相信我可以使用Selenium工作并重新访问包含提交表单提交之间所有链接的“主页”页面,但这可能意味着数百个额外的页面加载,缓存与否。 到目前为止的代码:’@ country = Array.new @browser.navigate.to “http://www.testingdomain{$env}.com/global” @browser.find_elements(:xpath, “//table[@class=’global-list’]//a”).each do |link| @countries << [link.text, link.href] ## The original WATIR line that needs an update end #links @countries.uniq! #DEBUG for false CMS content' 我在selenium-webdriver文档中找到的最接近的项目是(字符串).attribute方法,但同样,我不确定哪些属性

如何将iphone模拟器连接到selgrid 2?

我已经完成了这里列出的所有步骤来设置一个支持webdriver的iphone模拟器。 在创建驱动程序实例时,我还可以使用以下代码在本地运行模拟器时运行我的脚本。 driver = Selenium::WebDriver.for :remote, :url => “http://localhost:3001/wd/hub”, :desired_capabilities => :iphone 我打算做的是将这个模拟器连接到sel grid 2,它有一个在windows机器上远程运行的集线器。 有人可以分享命令在mac机器上启动selenium webdriver节点(巧合的是我的本地机器)。 就像是 java -jar selenium-server-standalone-2.21.0.jar -role webdriver -hubHost remotewindowmachine.com -hubPort 4444 -hub http://remotewindowmachine.com:4444/grid/register -host iphoneIP/hub -port 3001 -browser browserName=iphone 这会引发错误 Exception in thread “main” java.net.BindException: Selenium is already running on port 3001. 这看起来很明显,但我很困惑要做什么。 那么有人可以帮助我吗?

如何使用无头铬与水豚和selenium

Chrome版本:59.0.3071.104 使用Cucumber,Capybara,Selenium实现无头Chrome的自动化测试。 function/支持/ env.rb require ‘rubygems’ require ‘capybara/cucumber’ Capybara.register_driver :selenium_chrome do |app| Capybara::Selenium::Driver.new(app, :browser => :chrome, args: [‘headless’]) end Capybara.default_driver = :selenium_chrome 在进行黄瓜测试时,它说: 警告Selenium [DEPRECATION]:不推荐使用args或:开关。 请改用Selenium :: WebDriver :: Chrome :: Options#add_argument。 使用Headless Chrome的水豚和selenium的正确方法是什么? 谢谢。 编辑1:我尝试使用Ruby-Binding , Capybara和工作示例进行以下操作 。 但它也会产生错误。 require ‘rubygems’ require ‘capybara/cucumber’ require ‘selenium-webdriver’ Capybara.register_driver :selenium_chrome do |app| options = Selenium::WebDriver::Chrome::Options.new options.add_argument(‘–headless’) driver […]

固定装置和Selenium和Rails(哦,我的?)

您在Rails应用程序上使用Selenium测试时使用了哪些数据? 你从装置加载? 使用现有的dev db? 使用单独的(非固定)数据库? 我在考虑我的选择。 我有一个带有大型Selenium测试套件的Rails应用程序,它运行在Selenium Grid的修改版本上。 现在,部分过程是在测试套件运行之前加载一大套灯具。 这是很多数据。 其中大部分是从我们的生产数据库导出的报告信息。 当我最初设置它时,我将数据从Oracle导出到yaml。 现在一些报告表中的模式发生了变化,所以当然我必须重新生成夹具数据。 有太多的东西,手动编辑文件是不值得的。 但是,为每一个小的架构变化进行重新生成似乎效率低下 – 更不用说这是另一个值得记住的步骤。 有没有更好的办法? 编辑:我原本打算在每次测试之前加载灯具,并在每次测试后卸载它们,就像常规的Rails测试一样。 但由于此报告数据,加载灯具大约需要15分钟。 有200多个测试,套件每12小时运行一次。 我可以弯曲太空船长! 编辑2:我也同意拥有这么大的装置是难闻的气味。 我不知道如何削减它,因为报告汇总了大量数据,而selenium测试的大部分价值在于他们测试报告。 即使它只是一小部分数据,但它仍然是另一套与架构变化保持协调的集合。 (我们有一个单独的,较小的单元,function和[Rails]集成测试集。) 这让我回到原来的问题 – 除了手工制作还是记得每次重新制作它们之外还有其他选择吗?

如何在无头Chrome上使用Selenium Webdriver?

我正在学习使用Selenium来做基本的事情,例如截取屏幕,抓取和测试,并希望将它与无头Chrome一起使用,Chrome现在从Chrome 59开始就是稳定的。 我已经能够使用’selenium-webdriver’gem和chromedriver截取屏幕截图,但不是无头。 这是我正在运行的ruby脚本,它在开始初始化驱动程序后挂起 require ‘rubygems’ require ‘selenium-webdriver’ Selenium::WebDriver.logger.level = :debug p ‘initializing driver’ driver = Selenium::WebDriver.for :chrome, switches: %w[–headless –disable-gpu –screenshot –hide-scrollbars] p ‘navigating to Google’ driver.navigate.to “http://google.com” driver.save_screenshot(“./screen.png”) driver.quit 和日志的输出: :> ruby rubytest.rb “initializing driver” 2017-06-07 15:55:43 DEBUG Selenium Executing Process [“/Users/name/Documents/scrapings/python/env/bin/chromedriver”, “–port=9515”] 2017-06-07 15:55:43 DEBUG Selenium polling for socket on [“127.0.0.1”, 9515] […]

如何在Selenium Ruby中hover(mouseover)一个元素?

任何人都知道如何将鼠标hover在Selenium Ruby Webdriver中的元素上? 我的代码是这样的: el = driver.find_element(:css => “#foo”) driver.move_to el # How do I trigger a mouseover event on this element? 我在Linux 32位中使用selenium-webdriver gem和Firefox。

使用WebDriver和Ruby与JavaScript下拉菜单交互?

我正在使用Ruby和Selenium WebDriver为网页编写自动化,但遇到了一个阻塞问题,网站上的一些下拉菜单是使用JavaScript而不是标准HTML制作的。 在这些下拉菜单中,用户可以从下拉列表中选择一个选项或单击它并开始键入它以根据键入的内容过滤结果(我假设这些下拉列表可能是非常长的列表选项)。 问题是我无法找到使用WebDriver与它们交互的方法,虽然我已经设法使用下面的代码在Selenium IDE中使用它,但是将此IDE脚本导出到Ruby不起作用: select css=select[name=dsref] demo 我使用的WebDriver代码是: def clickOn (parameters = {}) # This will accept a locator type and name to click on # # EXAMPLE # # clickOn( # locatorType: :link, # locatorName: ‘Home’ # ) # # This will click on the link named ‘Home’ locatorType = parameters[:locatorType] locatorName = […]

如何用Capybara关闭浏览器?

我有一种情况,当我使用(使用:selenium驱动程序)多个浏览器与Capybara测试我的前端。 如果不需要Capybara,如何使用Capybara关闭其中一些?