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 可以有相同的行为,但默认情况下不会)

在上面的代码中,首先在页面上搜索 linklink_text。如果没有找到 link,则返回 nil。 因此,为了使这段代码起作用,我们需要等待带有 link 文本的 link 出现在页面上,然后单击它。 所以你可以在点击 fink

之前使用下面提到的任何一个代码
  1. page.should have_content(link_text)

  2. 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 水豚测试已在您的环境文件中设置。

希望这对您有所帮助:)