【发布时间】:2012-10-30 23:05:04
【问题描述】:
我正在使用 Selenium WebDriver 和 Ruby 执行一些自动化操作,但在 5 步流程的第 3 步附近遇到了验证码问题。
我将所有自动化都放入 rake 脚本中,所以我想知道是否有一个命令可以暂停或中断暂时运行的脚本,直到我将数据输入验证码,然后在下一页继续运行。
【问题讨论】:
标签: ruby selenium captcha selenium-webdriver
我正在使用 Selenium WebDriver 和 Ruby 执行一些自动化操作,但在 5 步流程的第 3 步附近遇到了验证码问题。
我将所有自动化都放入 rake 脚本中,所以我想知道是否有一个命令可以暂停或中断暂时运行的脚本,直到我将数据输入验证码,然后在下一页继续运行。
【问题讨论】:
标签: ruby selenium captcha selenium-webdriver
以 seleniumnewbie 的回答为基础,并假设您可以访问运行脚本的控制台:
print "Enter Captcha"
captchaTxt = gets.chomp
yourCaptchaInputWebdriverElement.send_keys captchaTxt
如果您只是想暂停并在浏览器中输入验证码,您可以让它在控制台上提示执行该操作,然后它就会坐在那里。
print "Enter the captcha in your browser"
gets
您还可以将隐式等待设置为相当长的时间,以便 Selenium 自动查看下一页并移出。但是,这将使重要的验证码步骤(用于记录/处理)退出您的测试,除非您对您的评论非常敏感。
由于这是一个需要用户输入的积极参与测试,我想说让测试人员在控制台上按“输入”是可行的方法。
【讨论】:
由于您是在脚本中编写测试,因此您只需在测试中添加一个睡眠,例如“sleep 100”。
但是,在测试中添加任意睡眠是不好的。您还可以执行类似“等待标题 'foo'”的操作,其中 'foo' 是第 4 步中页面的标题。它不必是标题,它可以是任何东西,但你明白了。等待语义表明步骤 3 已完成,步骤 4 已准备好开始。
这样,等待更有针对性。
【讨论】:
这已在 JAVA 中实现,但技术类似。您的解决方案可以在 here 找到
【讨论】: