Watir строковое значение исключено Ruby
Предупредить Watir [Depreciation], используя локатор:class для определения местоположения нескольких классов со строковым значением, не рекомендуется. Вместо этого используйте массив
я получаю эту ошибку при запуске этой строки
browser.button(:class => '_t38eb _ov9ai').click
который я думаю, это один класс, а не несколько классов, я попробовал это как упоминание в враждующих
browser.button(:class => ['_t38eb','_ov9ai']).click
но страница зависает, а затем завершает работу в сети. Я пытаюсь заскочить в Instagram, здесь пытается войти на страницу после заполнения поля имени пользователя и пароля.
и если я напишу это, хромедрайвер заканчивается
browser.button(:class == '_t38eb _ov9ai').click
2 ответа
Существует разница между драйвером 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()
Метод нужен Hash Object, а не объект TrueClass
или же FalseClass
который вы передаете, пока пишете :class == '_t38eb _ov9ai'
Если вы хотите передать массив, вам лучше использовать #split:
browser.button(:class => '_t38eb _ov9ai'.split).click
FYI: Watir
с открытым исходным кодом.
Эта строка является источником предупреждения об устаревании.
Причиной такого осуждения является создание более идиоматического xpath с contains(this) and contains(that)
,
Я не уверен, почему это замерзает, но я уверен, что совершенно безопасно игнорировать предупреждение.