Appium-Capybara-ruby 运行 物理设备上的自动化和一些水豚功能不工作
Appium-Capybara-ruby running automation on Physical device and some of the capybara function not working
我已经安装了 Appium - Capybara,并且能够 运行 在物理设备上使用自动化套件,但面临的方法很少
我能够成功 运行 水豚方法
fill_in field, :with => text
click_button button_text
expect(page).to have_content(text)
但以下方法存在问题(它适用于笔记本电脑上的常规 chrome,但不适用于移动设备)
page.first(:link, link_text).click
你能帮我了解一下 appium capybara 是支持所有的 capybara 方法还是只支持其中的少数方法。
下面是错误信息
undefined method `click' for nil:NilClass (NoMethodError)
undefined method 'click' for nil:NilClass (NoMethodError)
告诉你 #first
没有返回一个元素(#first
returns 立即返回匹配元素,如果有 none).您使用 first
而不是 find
是有原因的吗?如果页面上只有一个匹配的 link,你应该更喜欢 find
而不是 first
(在本例中是 find_link
),或者尝试将范围限定到页面的一部分其中 the 只会是一个 link,因为它会抛出一个错误来解释为什么它没有找到 link(而不是返回 nil)并且还有等待元素出现的行为(first
可以有相同的行为,但默认情况下不会)
在上面的代码中,首先在页面上搜索 link
和 link_text
。如果没有找到 link,则返回 nil。
因此,为了使这段代码起作用,我们需要等待带有 link 文本的 link 出现在页面上,然后单击它。
所以你可以在点击 fink
之前使用下面提到的任何一个代码
page.should have_content(link_text)
page.find_link(link_text)
如果上述代码不起作用,那么您还可以尝试增加默认等待时间,如下所示:
Capybara.default_wait_time = 30
page.should have_content(link_text)
page.first(:link, link_text).click
Capybara.default_wait_time = DEFAULT_WAIT_TIME
DEFAULT_WAIT_TIME 水豚测试已在您的环境文件中设置。
希望这对您有所帮助:)
我已经安装了 Appium - Capybara,并且能够 运行 在物理设备上使用自动化套件,但面临的方法很少
我能够成功 运行 水豚方法
fill_in field, :with => text
click_button button_text
expect(page).to have_content(text)
但以下方法存在问题(它适用于笔记本电脑上的常规 chrome,但不适用于移动设备)
page.first(:link, link_text).click
你能帮我了解一下 appium capybara 是支持所有的 capybara 方法还是只支持其中的少数方法。
下面是错误信息
undefined method `click' for nil:NilClass (NoMethodError)
undefined method 'click' for nil:NilClass (NoMethodError)
告诉你 #first
没有返回一个元素(#first
returns 立即返回匹配元素,如果有 none).您使用 first
而不是 find
是有原因的吗?如果页面上只有一个匹配的 link,你应该更喜欢 find
而不是 first
(在本例中是 find_link
),或者尝试将范围限定到页面的一部分其中 the 只会是一个 link,因为它会抛出一个错误来解释为什么它没有找到 link(而不是返回 nil)并且还有等待元素出现的行为(first
可以有相同的行为,但默认情况下不会)
在上面的代码中,首先在页面上搜索 link
和 link_text
。如果没有找到 link,则返回 nil。
因此,为了使这段代码起作用,我们需要等待带有 link 文本的 link 出现在页面上,然后单击它。
所以你可以在点击 fink
page.should have_content(link_text)
page.find_link(link_text)
如果上述代码不起作用,那么您还可以尝试增加默认等待时间,如下所示:
Capybara.default_wait_time = 30
page.should have_content(link_text)
page.first(:link, link_text).click
Capybara.default_wait_time = DEFAULT_WAIT_TIME
DEFAULT_WAIT_TIME 水豚测试已在您的环境文件中设置。
希望这对您有所帮助:)