使用:class locator警告Watir [Depreciation]来定位多个 不推荐使用具有字符串值的类。改为使用数组
运行此行时出现此错误
browser.button(:class => '_t38eb _ov9ai').click
我认为这是一个班级而不是多个班级,我在战争中提到过这个。
browser.button(:class => ['_t38eb','_ov9ai']).click
但页面冻结然后终止 网页我尝试使用金龟子是Instagram在这里尝试在填写用户名和密码字段后登录页面
如果我写这个chromedriver终止
browser.button(:class == '_t38eb _ov9ai').click
答案 0 :(得分:1)
仅供参考:Watir
是开源的。
This line是弃用警告的来源。
这种弃用的原因是使用contains(this) and contains(that)
构建更具惯用性的xpath。
我不确定为什么会冻结,但我很肯定忽略警告是完全安全的。
答案 1 :(得分:0)
当您自动化时,Chrome驱动程序和Firefox驱动程序之间存在差异,您的浏览器正在关闭,因为Chrome驱动程序在执行代码后关闭了浏览器一次,但Firefox驱动程序未关闭浏览器。如果您想让Chrome浏览器保持打开状态,请使用此代码
require 'watir'
caps = Selenium::WebDriver::Remote::Capabilities.chrome(chrome_options: {detach: true})
b = Watir::Browser.new :chrome, desired_capabilities: caps
下面给出的代码不起作用
browser.button(:class == '_t38eb _ov9ai').click
那是因为button()
方法需要哈希对象而不是您在撰写TrueClass
时传递的FalseClass
或:class == '_t38eb _ov9ai'
的对象
如果您想传递数组,最好使用#split:
browser.button(:class => '_t38eb _ov9ai'.split).click