Не могу найти элементы id с Python3 и Selenium - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь получить все элементы 'id' на определенной веб-странице. Я могу найти элемент ul, который их содержит, и даже могу найти указанный элемент c по идентификатору (т. Е. Browser.find_element_by_id ('380797')), но когда я выполняю browser.find_all_elements_by_tag_name ('id'), Результатом является пустой список. Я также пытался css или xpath, тот же результат.

Как я могу получить все элементы id в списке? html выглядит примерно так:

... ... ... enter image description here

Ответы [ 3 ]

1 голос
/ 02 мая 2020

browser.find_elements_by_xpath ("// div [@ id =" placards-container "] / ul / div [содержит (@ class, 'placard')]]

" Содержит "- лучшее ключевое слово для определить точный тип элементов.

0 голосов
/ 02 мая 2020

Используйте общие атрибуты, которые присутствуют во всех элементах. Правило таково: найти все div с идентификаторами из div с id контейнера-плаката.

CSS:
browser.find_elements_by_css_selector("#placards-container div[id]") или
browser.find_elements_by_css_selector("#placards-container ul>div[id]")

Xpath:
browser.find_elements_by_xpath("//div[@id='placards-container']//div[@id]") или
browser.find_elements_by_xpath("//div[@id='placards-container']/ul/div[@id]")

0 голосов
/ 02 мая 2020

Вы можете использовать execute_script. (лучше на мой взгляд)

external_js = """
    jsonData = [];
    data = document.querySelectorAll("#placards-container > ul")[0];

    for(var row of data["children"]){
        JSON.stringify(jsonData.push({id : row.id}));
    }
    return jsonData;
"""
browser.execute_script(external_js)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...