Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

python + selenium + jquery в FF не работает поиск списка элементов

firefox
chrome
python
selenium
webdriver
Теги: #<Tag:0x00007f7b62488ae8> #<Tag:0x00007f7b624886b0> #<Tag:0x00007f7b624882c8> #<Tag:0x00007f7b624aff80> #<Tag:0x00007f7b624afc60>

(Ant1dot) #1

Доброго дня.
Вопрос:
Мы иногда в локаторов используем псевдоселекторы css (visible).
Находим мы такие элементы через jQuery.
Вопрос:
Почему в Chrome все работает нормально и для списка элементов и для одного элемента

Список
self.driver.execute_script(“return jQuery(”" + ‘.ws-item-toolbar’ + “”);")
[< selenium.webdriver.remote.webelement.WebElement (session=“fc289639-ec20-461d-86f5-d08d2df73651”, element=“22”)>, < selenium.webdriver.remote.webelement.WebElement (session=“fc289639-ec20-461d-86f5-d08d2df73651”, element=“23”)>, < selenium.webdriver.remote.webelement.WebElement (session=“fc289639-ec20-461d-86f5-d08d2df73651”, element=“24”)>, < selenium.webdriver.remote.webelement.WebElement (session=“fc289639-ec20-461d-86f5-d08d2df73651”, element=“25”)>]

Один элемент
self.driver.execute_script(“return jQuery(”" + ‘.ws-item-toolbar’ + “”)[0];")
< selenium.webdriver.remote.webelement.WebElement (session=“fc289639-ec20-461d-86f5-d08d2df73651”, element=“22”)>

А в FF, когда должен вернутся список, возвращается словарь со списком атрибутов (и кодом методов в качестве значений) из js

type(self.driver.execute_script(“return jQuery(”" + ‘.ws-item-toolbar’ + “”);"))
< class ‘dict’>

А если возвращать 1 элемент все работает нормально:
type(self.driver.execute_script(“return jQuery(”" + ‘.ws-item-toolbar’ + “”)[0];"))
< class ‘selenium.webdriver.remote.webelement.WebElement’>


(Ant1dot) #2

Нашел выход, вот так везде работает и возвращает webelement
self.driver.execute_script(“return jQuery.find(’%s’);” % jquery_selector)