Cucumber watir-它能够同时使用watir webdriver和selenium webdriver吗?
我是自动化新手,如果标题不合适,很抱歉 我已经按照指南安装了Ruby、Devkit、gemJSON、cucumber、capybara、SeleniumWebDriver和rspec 但是,我无法使用完整的xpath(通过xpath插件和开发人员工具进行检查和验证)定位元素,我的操作是:Cucumber watir-它能够同时使用watir webdriver和selenium webdriver吗?,cucumber,capybara,watir,watir-webdriver,Cucumber,Capybara,Watir,Watir Webdriver,我是自动化新手,如果标题不合适,很抱歉 我已经按照指南安装了Ruby、Devkit、gemJSON、cucumber、capybara、SeleniumWebDriver和rspec 但是,我无法使用完整的xpath(通过xpath插件和开发人员工具进行检查和验证)定位元素,我的操作是: page.find(:xpath, "my_xpath").send_keys(yyy) 我得到: 找不到可见的xpath 我还尝试: page.findElement(By.xpath("my_xpath"
page.find(:xpath, "my_xpath").send_keys(yyy)
我得到:
找不到可见的xpath
我还尝试:
page.findElement(By.xpath("my_xpath")).send_keys("ori_pw")
我得到:
未初始化的常量由(NameError)
我想尝试使用watir,我已经安装了gemwatir,watirwebdriver。
并在我的env.rb中添加了require'watir'
然后我尝试:
page.input(:name => "xxx").set(yyy)
但我得到了:未定义的#方法“input”(NoMethodError)
请给我一些建议好吗?
谢谢
============================================================================编辑#1
我的env.rb现在看起来像这样:
require 'rubygems'
require 'capybara'
require 'capybara/dsl'
require 'rspec'
require "selenium-webdriver"
require 'watir'
require 'cucumber'
Selenium::WebDriver::Firefox::Binary.path='C:\Program Files\Mozilla Firefox\firefox.exe'
Capybara.run_server = false
#Set default driver as Selenium
Capybara.default_driver = :selenium
#Set default selector as css
Capybara.default_selector = :cs
#Syncronization related settings
module Helpers
def without_resynchronize
page.driver.options[:resynchronize] = false
yield
page.driver.options[:resynchronize] = true
end
end
World(Capybara::DSL, Helpers)
如何禁用水豚并正确设置水资源?
对不起,我没有技术背景
托马斯,是的,元素是可见的,
实际上,我将设置这3个密码字段的值。
我尝试的xpath是:
/html/body[@class='modal-open']/app-root/div[@id='wrapper']/app-navigation/user-change-password/div[@id='myModal']/div[@class='modal-dialog modal-lg']/div[@class='modal-content']/div[@class='modal-body']/form[@class='ng-pristine ng-invalid ng-touched']/fieldset[@class='form-horizontal']/div[@class='form-group'][1]/div[@class='col-sm-7']/input[1]
(最后,我使用避免使用类,因为我有时会看到类名不同)
谢谢
===============================================================================编辑#2
问题现在转移到chromedriver。
双击它可以显示
Starting ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) on port 9515
Only local connections are allowed.
但在cmd上输入chromedriver将显示chromedriver.exe已停止工作。它不适用于您的原因是geckodriver/firefox中的一个不幸错误-这可能也会影响watir-它假设任何具有
隐藏属性的元素实际上都是不可见的(如果显示样式设置为“默认”以外的任何值,则它实际上会覆盖隐藏属性,但与selenium无关)。这会影响您,因为元素div#myModal
上的hidden
属性使selenium认为整个模式不可见-。如果您改为使用Chrome进行测试,问题就会消失
此外,如您所示,使用特定的XPath是一个糟糕的想法,并且会导致非常脆弱的测试。如果您切换到Chrome(Capybara.default\u driver=:selenium\u Chrome
),您最好只做以下操作
page.fill_in('Original Password', with: 'blah')
或
最后一点,:ressynchronize
选项在很久以前就消失了,您可能想找到一个更为更新的指南来遵循它您要查找的元素是否在页面上实际可见?(显示您请求的实际XPath和相关HTML会有所帮助)你不能混合使用capybara和watir,他们各自单独维护自己的会话。谢谢Thomas,我将capybara.default\u driver=:selenium更改为capybara.default\u driver=:selenium\u chrome,但上面说无法连接到chromedriver 127.0.0.1:9515(selenium::WebDriver::Error::WebDriverError)我在Win 10 x64上,有chromedriver(v2.33)放置在C:\webdriver中,并已将路径添加到path系统变量。@user8750496听起来chromedriver启动不正确。请尝试手动运行它,查看是否有错误。Chrome是否位于标准位置,如果不是,请尝试设置Selenium::webdriver::Chrome::Binary.path
,与Firefox相同。如果没有其中,您必须在调试模式下运行,或者启用chromedriver日志,查看日志是否告诉您任何信息如果我转到目录并双击,它可以显示启动chromedriver 2.33.506120(E3E5343736286C0BC2D2DC9AA4915BA81D9023F)在端口9515上,只允许本地连接。
但当我在cmd上输入chromedriver时,它显示chromedriver.exe已停止工作。我试图设置Selenium::WebDriver::Chrome::Binary.path
但它显示未初始化常量Selenium::WebDriver::Chrome::Binary(NameError)
@user8750496请确保路径中没有其他版本的chromedriver-除此之外,我无法猜测我刚刚将chromedriver.exe和geckodriver.exe放在同一文件夹C:\webdriver中
page.find('input[name="originalPassword"]`).set('blah')