除了 name 属性之外,是否有可能获得带有 Mechanize 的复选框?
Is it possible to get a checkbox with Mechanize other than name attribute?
我一直在尝试使用 Ruby 和 Mechanize 进行抓取。
我看到的网站说获取复选框并检查它的方法如下。
form.checkbox_with(:name => 'name').check
但是,我想要获取的复选框没有名称属性。
相反,它有一个 class 属性。是否可以像下面那样做,或者有其他方法可以实现吗?
form.checkbox_with(:class => 'class_name').check
form.checkbox_with(:class_name => 'class_name').check
版本
rails: 5.2.4.4
ruby: 2.6.3
机械化:2.7.6
根据source code是的
def elements_with singular, plural = "#{singular}s"
class_eval <<-CODE
def #{plural}_with criteria = {}
selector = method = nil
if String === criteria then
criteria = {:name => criteria}
else
criteria = criteria.each_with_object({}) { |(k, v), h|
case k = k.to_sym
when :id
h[:dom_id] = v
when :class
h[:dom_class] = v
when :search, :xpath, :css
...
所以你可以使用任何一个
form.checkbox_with(class: 'class_name').check
# OR by xpath
form.checkbox_with(xpath: '//*[@id="someId"]/a[1]').check
# OR by id
form.checkbox_with(id: 'someId').check
我一直在尝试使用 Ruby 和 Mechanize 进行抓取。
我看到的网站说获取复选框并检查它的方法如下。
form.checkbox_with(:name => 'name').check
但是,我想要获取的复选框没有名称属性。
相反,它有一个 class 属性。是否可以像下面那样做,或者有其他方法可以实现吗?
form.checkbox_with(:class => 'class_name').check
form.checkbox_with(:class_name => 'class_name').check
版本
rails: 5.2.4.4
ruby: 2.6.3
机械化:2.7.6
根据source code是的
def elements_with singular, plural = "#{singular}s"
class_eval <<-CODE
def #{plural}_with criteria = {}
selector = method = nil
if String === criteria then
criteria = {:name => criteria}
else
criteria = criteria.each_with_object({}) { |(k, v), h|
case k = k.to_sym
when :id
h[:dom_id] = v
when :class
h[:dom_class] = v
when :search, :xpath, :css
...
所以你可以使用任何一个
form.checkbox_with(class: 'class_name').check
# OR by xpath
form.checkbox_with(xpath: '//*[@id="someId"]/a[1]').check
# OR by id
form.checkbox_with(id: 'someId').check