improve label selector performance
This commit is contained in:
parent
c4678f93a2
commit
d12b375d49
|
@ -411,12 +411,14 @@ Capybara.add_selector(:label, locator_type: [String, Symbol]) do
|
||||||
locator_matchers |= XPath.attr(test_id) == locator if test_id
|
locator_matchers |= XPath.attr(test_id) == locator if test_id
|
||||||
xpath = xpath[locator_matchers]
|
xpath = xpath[locator_matchers]
|
||||||
end
|
end
|
||||||
if options.key?(:for) && !options[:for].is_a?(Capybara::Node::Element)
|
if options.key?(:for)
|
||||||
with_attr = XPath.attr(:for) == options[:for].to_s
|
if (for_option = options[:for].is_a?(Capybara::Node::Element) ? options[:for][:id] : options[:for])
|
||||||
labelable_elements = %i[button input keygen meter output progress select textarea]
|
with_attr = XPath.attr(:for) == for_option.to_s
|
||||||
wrapped = !XPath.attr(:for) &
|
labelable_elements = %i[button input keygen meter output progress select textarea]
|
||||||
XPath.descendant(*labelable_elements)[XPath.attr(:id) == options[:for].to_s]
|
wrapped = !XPath.attr(:for) &
|
||||||
xpath = xpath[with_attr | wrapped]
|
XPath.descendant(*labelable_elements)[XPath.attr(:id) == for_option.to_s]
|
||||||
|
xpath = xpath[with_attr | wrapped]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
xpath
|
xpath
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue