在我的测试自动化项目中,我将红宝石与水豚,黄瓜和硒一起使用。 (我已经安装了devkit并且chrome正在正常启动)
在网站中寻找要选择的元素时,我使用的是方法driver.findElement (By.xpath (.... etc")
,但是在执行黄瓜时,它指示以下错误:
我已经删除并重新安装了selenium-webdriver
gem,但是它没有解决。
有人可以帮助我解决为什么WebDriver
在这种情况下似乎无效吗?
代码示例
(使用标签img查找按钮注销,因为该元素没有名称或ID)
After('@logout') do
element = driver.findElement(By.xpath("//img[@src='/Portal/img/user.png']"));
element.click
end
执行黄瓜结果
功能:登录
说明功能
在ws://127.0.0.1:60121 / devtools / browser / c0bacc6e-697a-4614-b82c-eb324d587df5上监听的DevTools
@logout
场景:Login_OK#功能/支持/登录。功能:14
假设我访问主门户网站页面,则为HRP#features / step_definitions / login_steps.rb:1
何时使用“ abc123”和“ abc123password”登录#功能/step_definitions/login_steps.rb:5
然后系统执行登录#功能/step_definitions/login_steps.rb:10
并显示消息“欢迎使用门户”。 #features / step_definitions / login_steps.rb:14
#(NameError)的未定义局部变量或方法`driver'
./features/support/hooks.rb:4:in After之后
失败情况:
黄瓜功能/支持/登录。功能:14#方案:Login_OK
1个场景(1个失败)
4个步骤(已通过4个步骤)
0分5.457秒
答案 0 :(得分:0)
如果您在标准设置中将Capybara与Cucumber一起使用,那么您实际上不应该直接调用硒webdriver实例-driver
(在极少数情况下除外)。相反,您应该使用Capybara方法。 After
钩中可用的内容完全取决于您在include
的位置上进行的操作,但是其中之一可能是可用的
After('@logout') do
element = page.find(:xpath, ".//img[@src='/Portal/img/user.png']"));
element.click
end
或
After('@logout') do
element = Capybara.current_session.findElement(:xpath, ".//img[@src='/Portal/img/user.png']");
element.click
end
注意:在包含的图像源上,找到注销按钮的方法可能比在XPath上找到XPath更好,但是如果没有看到按钮的HTML,就无法确定(例如,Capybaras按钮查找器将与按钮匹配)。嵌套在