0

我的 html 中有以下片段显示 FB-Connect 链接:

<fb:login-button id="mylogin" onlogin="try {
window.location.href = "http://localhost:3000/";
} catch (e) { alert('RJS error:\n\n' + e.toString()); alert('window.location.href = \"http://localhost:3000/\";'); throw e }"></fb:login-button>

手动单击它时效果很好。但是在 Cucumber(@javascript 标签)中使用 Capybara+Selenium 时,他们似乎根本找不到要点击的元素。我尝试了几种尝试匹配它的组合,例如:

When I follow "mylogin" # or
When I press "mylogin"

我得到的答案如下:

no link with title, id or text 'mylogin' found (Capybara::ElementNotFound)

我还尝试匹配内部文本“登录”或“登录按钮”,但无济于事。尝试遵循Cucumber 和 Capybara 的建议,也单击非链接或按钮元素,但没有成功。

我正在使用 Facebooker2 gem 来生成链接:

#in my index.html.haml
= fb_connect_async_js
= fb_login_and_redirect('http://localhost:3000/', id: 'mylogin')

宝石版本:

capybara (0.3.9) #(actually pulling it from github directly)
xpath (~> 0.1.2)
selenium-webdriver (>= 0.0.27)
cucumber (0.9.2)

有什么提示吗?谢谢。

4

1 回答 1

0

我不使用 Cucumber,但据我了解,当您在 Capybara 中查找元素时,它会检查“内容”和“名称”。当然,它专门说它正在查看您的错误消息中的 ID,所以可能不是。我认为实际的问题是:

no link with

在您的错误消息中,因为这意味着它正在寻找一个链接,而您在那里没有链接,所以您有一个 javascript 元素。

不过,如果您想检查“id”,我会尝试专门要求它查找具有参数 id='mylogin' 的元素,可能通过不同的方法,如 xpath。

再说一次,我不知道 Cucumber,但只有 Capybara 我会这样做:

page.first(:xpath, '//[@id="mylogin"]').click
于 2011-10-07T14:29:11.573 回答