Cucumber watir-它能够同时使用watir webdriver和selenium webdriver吗?

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"

我是自动化新手,如果标题不合适,很抱歉

我已经按照指南安装了Ruby、Devkit、gemJSON、cucumber、capybara、SeleniumWebDriver和rspec

但是,我无法使用完整的xpath(通过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')