Получение ошибки при переходе на веб-сайт, чтобы нажать кнопку «следовать» - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь создать робота-последователя, работающего с твиком, и создал простой код для перехода на веб-сайт и нажатия кнопки «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 Ответ

0 голосов
/ 30 января 2019

Где определяется 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]
  • wrapper: элементы страницы, где выполняется поиск по целиэлемент (например, div с тегами li).
  • атрибут: атрибут, используемый для выбора целевого элемента.
  • выбор: строка с текстом, который находится в целевом атрибуте.
  • 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()
...