#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.