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

webdriver
selenium
python
firefox
chrome
Теги: #<Tag:0x00007fedbfe52a40> #<Tag:0x00007fedbfe528b0> #<Tag:0x00007fedbfe526f8> #<Tag:0x00007fedbfe52590> #<Tag:0x00007fedbfe523d8>

(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)