Получение ошибки при переходе на веб-сайт, чтобы нажать кнопку "следовать"
Я пытаюсь создать робота-последователя, и я создал простой код для перехода на веб-сайт и нажатия кнопки "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()