我有多个用于 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/