Где определяется 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()