ruby-on-rails - 包含文件 ruby Selenium

标签 ruby-on-rails ruby selenium rspec selenium-webdriver

我有多个用于 selenium-webdriver 的 ruby​​ 测试用例,所有文件都共享相同的函数。有没有办法创建一个全局文件并将文件包含到这些测试用例中,而不是一遍又一遍地输入它们

例如 - 我创建了一个文件 setup.rb

def setup

    @driver = Selenium::WebDriver.for :firefox
    wait = Selenium::WebDriver::Wait.new(:timeout => 10) 
end 

然后在我的 test_file.rb 中开始

require setup

 setup
 @driver.find_element(:xpath => '//span[text()="войти"]').click

有错误

NoMethodError:
       undefined method `find_element' for nil:NilClass

最佳答案

将其从实例变量更改为全局变量。让它成为 $driver 而不是 @driver ,你应该不会有问题。将其更改为...

def self_setup

    $driver = Selenium::WebDriver.for :firefox
    wait = Selenium::WebDriver::Wait.new(:timeout => 10) 
end

然后

require "./setup.rb"

 setup.setup
 $driver.find_element(:xpath => '//span[text()="войти"]').click

那应该行得通。不过,在查找该 xpath 之前,您可能希望先访问一个页面。安装程序只会打开一个新的 firefox webdriver 实例。我还建议更改 setup.rb 的名称,以便它可以是 foo.setup 而不是 setup.setup。我将 Lib.rb 用于我希望能够定期调用的方法,例如一个是 Lib.signin_admin

希望这对你有用。

关于ruby-on-rails - 包含文件 ruby Selenium ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13840923/

相关文章:

html - 在 View 中创建 Ruby on Rails 矩阵表

用于过滤堆栈中引发的所有异常的 Ruby rack 中间件

angularjs - 如何断言某个元素已获得焦点?

ruby-on-rails - 创建 has_many :through association in Rails 4 with building a new object

ruby-on-rails - 在开发环境中覆盖 ActionMailer 的邮件地址

ruby-on-rails - Rails - 在不同 View 中渲染 form_for @user

file - 如何使用 Selenium 和 C# 在 IE 浏览器中处理文件下载对话框/弹出窗口

java - 如何从不同的可发送电子邮件的 html 文件构建单个 testNG 可发送电子邮件的报告

javascript - 如何使用 javascript 以 Rails 形式获取本地时间?

ruby-on-rails - 卡住安装 Rails : rails s and bundle exec rails server error