水豚元素在某处不可点击
Capybara Element is not clickable at point
我试图使用 capybara
帮助我将词汇上传到 memrise.com,但我在其登录页面遇到了一些问题。
这是我写的。
def sign_in
self.visit 'https://www.memrise.com/login/'
find(".inpt-large[name='username']").set 'my-username' # Step 1
find(".inpt-large[name='password']").set 'my-password' # Step 2
find('input.btn-success.btn-large').click # Step 3
end
它可以完成 step1
和 setp2
但有时会在 step3
失败。
下面是错误信息。
gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/response.rb:70:in `assert_ok': Element is not clickable at point (592.5, 23). Other element would receive the click: <span class="nav-item-btn-text"></span> (Selenium::WebDriver::Error::UnknownError)
由于页面上我能找到匹配的唯一项目 在固定的 header 中,我猜你'重新 运行 使用太小的 window 大小重新测试,因此当测试 运行 时,您想要点击的实际登录按钮不在页面上。这意味着当测试去点击按钮时,它需要将项目滚动到视图中,它通过将它滚动到页面顶部来实现。这使得固定 header 后面的按钮无法被点击。要解决这个问题,您可以
增加 window 大小,这样表单就不需要滚动了
在您的 driver 注册中将 elementScrollBehavior
功能设置为 1
这将导致元素滚动直到它们在页面底部可见而不是顶部。
在点击按钮之前自己滚动页面
此外,您使用 find(...).set 与仅使用 fill_in 相比是否还有其他原因?
def sign_in
visit 'https://www.memrise.com/login/'
within('form#login') do
fill_in('username', with: 'my-username')
fill_in('password', with: 'my-password')
click_button('Login')
end
assert_text('You are now logged in') # whatever messagge is shown once login complete
end
我试图使用 capybara
帮助我将词汇上传到 memrise.com,但我在其登录页面遇到了一些问题。
这是我写的。
def sign_in
self.visit 'https://www.memrise.com/login/'
find(".inpt-large[name='username']").set 'my-username' # Step 1
find(".inpt-large[name='password']").set 'my-password' # Step 2
find('input.btn-success.btn-large').click # Step 3
end
它可以完成 step1
和 setp2
但有时会在 step3
失败。
下面是错误信息。
gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/response.rb:70:in `assert_ok': Element is not clickable at point (592.5, 23). Other element would receive the click: <span class="nav-item-btn-text"></span> (Selenium::WebDriver::Error::UnknownError)
由于页面上我能找到匹配的唯一项目 在固定的 header 中,我猜你'重新 运行 使用太小的 window 大小重新测试,因此当测试 运行 时,您想要点击的实际登录按钮不在页面上。这意味着当测试去点击按钮时,它需要将项目滚动到视图中,它通过将它滚动到页面顶部来实现。这使得固定 header 后面的按钮无法被点击。要解决这个问题,您可以
增加 window 大小,这样表单就不需要滚动了
在您的 driver 注册中将
elementScrollBehavior
功能设置为1
这将导致元素滚动直到它们在页面底部可见而不是顶部。在点击按钮之前自己滚动页面
此外,您使用 find(...).set 与仅使用 fill_in 相比是否还有其他原因?
def sign_in
visit 'https://www.memrise.com/login/'
within('form#login') do
fill_in('username', with: 'my-username')
fill_in('password', with: 'my-password')
click_button('Login')
end
assert_text('You are now logged in') # whatever messagge is shown once login complete
end