如果您想了解运行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窗口输出文件时如何导出结果
- Ruby Selenium Webdriver无法找到Mozilla Geckodriver
- ruby webdriver:如何在脚本运行时捕获按键?
- ruby – LoadError:无法加载这样的文件 – selenium / webdriver / phantomjs
- ruby – selenium-webdriver并等待页面加载
运行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
我的开发目录中安装了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:如何在脚本运行时捕获按键?
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
解决方法
如果使用以下脚本创建文件,然后在命令提示符下运行它(例如“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
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
解决方法
PhantomJS项目 is no longer being maintained.如果您确实需要无头,请调查Chrome或Firefox无头选项.
ruby – selenium-webdriver并等待页面加载
driver = Selenium::WebDriver.for :chrome driver.navigate.to url driver.wait_for_page_to_load "30000"
用Java不是问题,但如何用ruby制作呢?
解决方法
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并等待页面加载等更多相关知识的信息可以在本站进行查询。
本文标签: