Selenium I';我试图找到一个无形的领域来填补使用水豚,但我所做的似乎没有工作
我目前正在尝试使用水豚来填写谷歌登录表单,但我最难找到要填写的隐藏字段 这是我试图填写的字段的HTML 这是测试代码Selenium I';我试图找到一个无形的领域来填补使用水豚,但我所做的似乎没有工作,selenium,rubygems,automated-tests,capybara,qa,Selenium,Rubygems,Automated Tests,Capybara,Qa,我目前正在尝试使用水豚来填写谷歌登录表单,但我最难找到要填写的隐藏字段 这是我试图填写的字段的HTML 这是测试代码 require "rails_helper.rb" RSpec.describe "Sign in page" do it 'displays the page intention' do visit('/mars') expect(page).to have_content 'Sign in with Google' end
require "rails_helper.rb"
RSpec.describe "Sign in page" do
it 'displays the page intention' do
visit('/mars')
expect(page).to have_content 'Sign in with Google'
end
it 'fills in user information' do
find(:xpath, '//*[@id="identifierId"]', visible: false)
end
end
这就是我遇到的错误。首先,你不应该试图填充隐藏字段,你应该像用户那样与可见元素交互。在这种情况下,可能意味着需要先单击另一个元素,以触发电子邮件输入变为活动状态。差不多
first('form div[jscontroller]').click
fill_in('identifierId', with: email)
应该适用于谷歌登录页面
注意:在查找元素时,您应该尽可能使用CSS而不是XPath,因为它会更快、更易于阅读,并且不会无意中破坏元素范围(/
vs/
在XPath中-请参阅)
更新:此外,所有it
块都是完全独立的,中间有一个浏览器重置,因此您需要访问每个块所需的页面(如果description
中的所有it
块都需要访问同一页面,您可以将访问放在块之前的中
注意:这一切都假设您实际上正在使用Selenium驱动程序进行此测试,正如问题标签所暗示的那样。尝试使用ID“identifierId”@bhupathituraga进行查找,这会导致错误“找不到ID“identifierId”'首先切换到活动元素,然后使用I进行查找。我不熟悉switch命令,但我添加了“switch\u to\u frame”('identifierId')在find命令之前,我仍然得到相同的错误@bhupathituraigits not frame其just active elementdriver.switch_to.active_element()
是的,我正在使用Selenium驱动程序进行此测试。我仍然很难找到正确的可见css。我尝试的每件事都会出现错误“Capybara::ExpectationNotMet:期望找到可见css”。@每天在访问页面几秒钟后睡眠,然后调用保存和打开屏幕截图
并添加我需要的内容注意你的问题。你也可以暂停测试(通过推、撬、睡等)然后查看浏览器,看看当前页面的实际状态是什么-如果我发布的代码不起作用,那么听起来你好像不在google登录页面上。@我刚刚注意到的另一件事是——你的测试实际上没有访问任何地方-访问是在before块中吗?访问(“/mars”)转到该页。我在routes.db文件中指定了该位置。我还发现,在这两种情况下,该页无法正确刷新。无论我使其休眠多长时间,它都不会重新加载。@尽管如此,但您没有访问('/mars')
在您的中,它“填写用户信息”进行测试--
每个它
都是完全独立的--屏幕截图(或只是查看浏览器)会向您显示它实际上不在页面上,因为每次测试之间浏览器都会重置为关于:空白。