Получение ошибки при переходе на веб-сайт, чтобы нажать кнопку "следовать"

Я пытаюсь создать робота-последователя, и я создал простой код для перехода на веб-сайт и нажатия кнопки "Follow", но он не нажимает кнопку "Follow".

import webbrowser

url = "https://twitch.tv/owlcrogs"
driver = webbrowser.open(url)


follow_button = 
driver.find_element_by_xpath(get_page_element("follow_button"))
follow_button.click()

1 ответ

Где определяется get_page_element("follow_button")? Вы должны быть уверены, что он возвращает валидный xpath.

В Google Chrome вы можете просмотреть xpath, щелкнув правой кнопкой мыши по целевому элементу и выбрав команду inspect. Затем инструменты разработчика развернуты. Над выделенным элементом в инструментах разработчика сделайте [правый клик >> копировать >> скопировать Xpath ]

Например, driver.find_element_by_xpath('//*[@id="id_element"]/div[2]/a/span'). Click()

Если если нет, то что-то не так с get_page_element. Какой тип ошибки возвращается?

Я только что проверил веб-страницу, и, возможно, вы должны поставить 'follow-button' вместо 'follow_button' с дефисом вместо подчеркивания. Тем не менее, я надеюсь, что поиск get_page_element по атрибуту data-a-target, xD.

Вот пример, чтобы сделать это:

def find_element_by_attribute(wrapper, attribute, selection=None, xpath = None):
        if selection is not None:
            element = list(filter(lambda x: x.get_attribute(attribute) is not None and \
                                            x.get_attribute(attribute).find(selection) != -1,\
                                            wrapper.find_elements_by_xpath('.//*' if xpath is None else xpath)))
        else:
            element = list(filter(lambda x: x.get_attribute(attribute) is not None,\
                                            wrapper.find_elements_by_xpath('.//*' if xpath is None else xpath)))

        return None if len(element) is 0 else element[0]
  • Обертка: элементы страницы, где выполняется поиск целевого элемента (например, div с тегами li).
  • attribute: атрибут, используемый для выбора целевого элемента.
  • выборка: строка с текстом, который находится в целевом атрибуте.
  • xpath: может быть использован для поиска в элементе subwrapper.

Вы можете сохранить этот код в модуле, например, auxiliars.py. Таким образом, ваш код после определения этой функции должен выглядеть примерно так:

import webbrowser
from auxiliars import find_element_by_attribute

url = "https://twitch.tv/owlcrogs"
driver = webbrowser.open(url)

follow_button = find_element_by_attribute(driver, 'data-a-target', selection='follow-button')
follow_button.click()
Другие вопросы по тегам