Python находит элементы в html с помощью selenium

#python-3.x #selenium

#python-3.x #селен

Вопрос:

я новичок в пакете python selenium. Я разрабатываю краулер для букмекерского сайта.

Я не могу щелкнуть и открыть ссылку на изображение.

Мой код:

 PATH = "C:Program Files (x86)chromedriver.exe" driver = webdriver.Chrome(PATH) web = 'https://odibets.com/' driver.get(web)  driver.implicitly_wait(3) # btn = driver.find_element_by_css_selector('span.icon')"" btn = driver.find_element_by_xpath("//a[@href='/League'] and //span[text()='League']")  # lt;img src="https://s3-eu-west-1.amazonaws.com/odibets/img/menu/odi-league-2.png"gt;  # //img[@src ="https://s3-eu-west-1.amazonaws.com/odibets/img/menu/odi-league-2.png"] # //span[text()='League'] btn.click()  

Я получаю следующее исключение. raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression //a[@href='/League'] and //span[text()='League'] because of the following error: TypeError: Failed to execute 'evaluate' on 'Document': The result is not a node set, and therefore cannot be converted to the desired type. (Session info: chrome=96.0.4664.45) Stacktrace: Backtrace: Ordinal0 [0x010D6903 2517251]

Прилагается код моментального снимка из инструментов разработчика Chrome и самой страницы. введите описание изображения здесь

введите описание изображения здесь

Ответ №1:

Ваш href был /лига не /Лига

 driver.find_element_by_xpath("//a[@href='/league'] [.//span[contains(.,'League')]]").click()  

Это также работает, так или иначе, элемент щелкал неправильно.

 elem=driver.find_element_by_xpath("(//a[@href='/league'] [.//span[contains(.,'League')]])[1]") driver.execute_script("arguments[0].click()", elem)  

Комментарии:

1. Я получаю следующее исключение после запуска кода на основе предоставленного вами кода. File "C:Program FilesPython38libsite-packagesseleniumwebdriverremoteerrorhandler.py", line 247, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable (Session info: chrome=96.0.4664.45) Stacktrace: Backtrace: Ordinal0 [0x00CF6903 2517251] Ordinal0 [0x00C8F8E1 2095329] Ordinal0 [0x00B92710 1058576] по-прежнему ссылка не может открыться

2. Нашел обходной путь.

3. Почему это выглядит сложным, click() метод не работает на первом.

4. Что-то в функции щелчка не работает, поэтому я просто использовал используемый javascript для тега a.