Python селен, найди кнопку - PullRequest
       0

Python селен, найди кнопку

0 голосов
/ 21 января 2020

Я искал stackoverflow и пробовал все, но, похоже, ничего не работает. Я использую Python3 .8 с Selenium 3.141.0.

Это кнопка:

<button id="task-open-filters-button" class="btn btn-icon icon-filter list-filter-button sn-tooltip-basic" data-original-title="Edit Filter">
<span class="sr-only">Show / hide filter</span>
</button>

Что я пробовал до сих пор:

# Because the page is so slow, I work with try/except to get the element. 
# This works fine for a simple link, but not for this button
while True:
    try:
        # elem = browser.find_element_by_xpath('//button[@id="task-open-filters-button"]')
        # elem = browser.find_element_by_xpath('//button[@class="btn btn-icon icon-filter list-filter-button sn-tooltip-basic"]')
        # elem = browser.find_element_by_link_text("Show / hide filter")
        # elem = browser.find_element_by_xpath("//*[@id='task-open-filters-button']")[0]
        # elem = browser.find_element_by_css_selector('.btn.btn-icon.icon-filter.list-filter-button.sn-tooltip-basic')
        elem = browser.find_element_by_id("task-open-filters-button")
        break
    except NoSuchElementException:
        print("Waiting for page to load!")
        sleep(1)
elem.click()

I не получайте еще одно сообщение об ошибке, пока l oop просто не ломается.

У вас, ребята, есть идеи, что еще попробовать? Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 21 января 2020

Когда я смотрю на ваш код, я вижу несколько потенциальных проблем.

Отсутствует цитата:

browser = webdriver.Chrome(chromedriver.exe")

Также - вы уверены chromedriver.exe правильный путь? Возможно, лучше указать абсолютный путь.

Кнопка закомментирована (хотя # не является html комментарием).

# <button id="task-open-filters-button"
# class="btn btn-icon icon-filter list-filter-button sn-tooltip-basic"
# data-original-title="Edit Filter">
# <span class="sr-only">Show / hide filter</span></button>

Это определенно правильный синтаксис:

elem = browser.find_element_by_id("task-open-filters-button")

Поэтому я предлагаю убедиться в правильности настроек. Сделай что-нибудь простое. Загрузите URL и верните текст со страницы.

PS: посмотрите этот урок

http://jonathansoma.com/lede/foundations-2018/classes/selenium/selenium-windows-install/

Это похоже на Конфигурация больше похожа на это

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.nytimes.com")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...