GVKun编程网logo

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

14

如果您想了解运行seleniumrubywebdriver脚本以从命令提示符ruby窗口输出文件时如何导出结果的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于RubySeleniumWeb

如果您想了解运行selenium ruby webdriver脚本以从命令提示符ruby窗口输出文件时如何导出结果的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于Ruby Selenium Webdriver无法找到Mozilla Geckodriver、ruby webdriver:如何在脚本运行时捕获按键?、ruby – LoadError:无法加载这样的文件 – selenium / webdriver / phantomjs、ruby – selenium-webdriver并等待页面加载的有价值的信息。

本文目录一览:

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

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

当前,通过使用“使用Ruby启动命令提示符”终端中的rake gem,我一次运行测试套件(由Selenium Ruby
Webdriver编写)中的所有Selenium脚本。

为此,我必须创建一个名称为“ rakefile.rb”的文件,其内容如下,并在终端中仅调用“ rake”
:(根据我以前的帖子中某人的指导,我已经了解了这一知识)。

task :default do    FileList[''file*.rb''].each { |file| ruby file }end

但是,如果执行时有一个脚本失败,运行将终止。

有人可以帮助指导我如何修改“ rakefile.rb”,以便如果有一个脚本失败,则系统将忽略它并继续运行我的测试套件中的下一个脚本?

另外,您能否建议我一种在将脚本运行到一个输出文件时将所有结果写入的方法?或者将每个脚本的结果放入每个输出文件中,并且输出文件将显示失败的脚本列表。任何帮助表示赞赏。非常感谢。

答案1

小编典典

我在单元框架内运行所有测试。我自己使用测试单元,但您也可以使用rspec。这也使您能够向代码中添加断言,然后由单元框架将其报告。如果一个测试失败或错误,则可以继续进行下一个测试。

我的rakefile的简化版本如下所示

require ''rake/testtask''#this will run all tests in directory with no dependencies Rake::TestTask.new do |t|  t.libs << "test"  t.test_files = FileList[''FAL*.rb'']  t.verbose = trueend#or you could run individual files like thistask :FAL001 do   ruby "FAL001.rb"end

每个测试用例看起来像这样

require "test-unit"gem "test-unit"require "selenium-webdriver"class FAL001 < Test::Unit::TestCase  def testFAL001 #methods that begin with test are automatically run     #selenium code goes here     assert_true(1 == 1)  end  def test002     #another test goes here   endend

Ruby Selenium Webdriver无法找到Mozilla Geckodriver

Ruby Selenium Webdriver无法找到Mozilla Geckodriver

我的开发目录中安装了geckodriver

ls | grep geckodrivergeckodrivergeckodriver-v0.11.1-linux64.tar.gz

我还导出到$ PATH变量

export PATH=$PATH:~/Development/geckodriver

但是当我尝试在项目的Rails控制台上初始化webdriver的实例时,我得到了

驱动程序= Selenium :: WebDriver.for:firefox

Selenium :: WebDriver :: Error :: WebDriverError:无法找到Mozilla
geckodriver。请从https://github.com/mozilla/geckodriver/releases下载服务器,并将其放置在PATH中。有关更多信息,请访问https://developer.mozilla.org/en-
US/docs/Mozilla/QA/Marionette/WebDriver。 这是什么问题。

答案1

小编典典

您拥有selenium-webdriver-3.0.0.beta3.1仅适用于Firefox
48及更高版本的工具(并且无法正常工作)。退回selenium-webdriver版本,2.53.4然后重试。

并尝试这个

  • 在终端中,将目录路径更改为安装gem的目录的路径
  • run gem uninstall selenium-webdriver
  • run gem install selenium-webdriver -v 2.53.4

ruby webdriver:如何在脚本运行时捕获按键?

ruby webdriver:如何在脚本运行时捕获按键?

我正在使用 ruby中的WebDriver打开一组URL – 一种幻灯片,在“幻灯片”(页面)之间间隔3秒.查看发生这种情况的人可能会单击Space,我需要将该页面URL保存到另一个文件中.我怎么能处理这些中断 – 抓住Space的事件?
require "watir-webdriver"

urls = [...list of URLs here...]
saved = []

b = Watir::browser.new

urls.each do |url|
  b.goto url
  sleep(3)

  # ...what should I put here to handle Space pressed?

  if space_pressed
    saved << b.url
  end
end

解决方法

看起来您的问题可以通过STDIN.getch解决.

如果使用以下脚本创建文件,然后在命令提示符下运行它(例如“ruby script.rb”),脚本将:

>导航到网址.
>询问是否应该捕获网址.
>如果用户在10秒内没有输入任何内容,则会进入下一个网址.因为速度太快,我从3改了.您可以在Timeout :: timeout(10)行中将时间更改回3秒.
>如果用户确实输入了某些内容,则在输入为空格时将保存该URL.否则它将忽略它并继续前进.

脚本:

require "watir-webdriver"
require 'io/console'
require 'timeout'

urls = ['www.google.ca','www.yahoo.ca','www.gmail.com']
saved = []

b = Watir::browser.new

urls.each do |url|
  b.goto url

  # Give user 10 seconds to provide input
  puts "Capture url '#{url}'?"
  $stdout.flush
  input = Timeout::timeout(10) {
    input = STDIN.getch
  } rescue ''

  # If the user's input is a space,save the url
  if input == ' ' 
    saved << b.url
  end
end

p saved

几个笔记:

>请注意,输入需要是命令提示符而不是浏览器.>如果用户在分配的超时之前按下某个键,脚本将立即进入下一个URL.

ruby – LoadError:无法加载这样的文件 – selenium / webdriver / phantomjs

ruby – LoadError:无法加载这样的文件 – selenium / webdriver / phantomjs

我在我的Cucumber Hooks文件中有这个代码来运行它正在工作的ghost驱动程序,直到昨天我开始看到错误消息:

Before do
  Selenium::WebDriver::PhantomJS.path = 'C:\phantomjs-2.1.1-windows\bin\phantomjs.exe'
  @browser = Watir::browser.start "https://www.google.com",:phantomjs
  @browser.window.maximize    
end

错误信息:

LoadError: cannot load such file -- selenium/webdriver/phantomjs

解决方法

是的,我们已从Selenium 3.8中删除了对PhantomJS的支持.
PhantomJS项目 is no longer being maintained.如果您确实需要无头,请调查Chrome或Firefox无头选项.

ruby – selenium-webdriver并等待页面加载

ruby – selenium-webdriver并等待页面加载

我正在尝试编写简单的测试.我的问题是,我想等到页面完全加载.目前我正在等待一些元素出现,但这不是我想要的.有可能做这样的事情:
driver = Selenium::WebDriver.for :chrome
driver.navigate.to url
driver.wait_for_page_to_load "30000"

用Java不是问题,但如何用ruby制作呢?

解决方法

这是 Selenium docs()建议的方式:
require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.get "http://google.com"

element = driver.find_element :name => "q"
element.send_keys "Cheese!"
element.submit

puts "Page title is #{driver.title}"

wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until { driver.title.downcase.start_with? "cheese!" }

puts "Page title is #{driver.title}"
driver.quit

如果这不是一个选项,你可以尝试this SO post的建议,虽然它需要在Ruby / Rails之上的一些Javascript.

看来wait.until已经/已经被淘汰了.新的建议过程,它寻找页面有你知道的元素将在那里:

expect(page).to have_selector '#main_div_id'

今天关于运行selenium ruby webdriver脚本以从命令提示符ruby窗口输出文件时如何导出结果的介绍到此结束,谢谢您的阅读,有关Ruby Selenium Webdriver无法找到Mozilla Geckodriver、ruby webdriver:如何在脚本运行时捕获按键?、ruby – LoadError:无法加载这样的文件 – selenium / webdriver / phantomjs、ruby – selenium-webdriver并等待页面加载等更多相关知识的信息可以在本站进行查询。

本文标签: