#python-3.x #selenium-chromedriver
Вопрос:
Мой код работает до тех пор, пока не появится список поисковиков, а затем мой код не сможет найти xpath ссылки для перехода. Это происходит, когда я вызываю функцию «clica_nome». Кто-нибудь может помочь мне узнать, почему это происходит? Примечание: в приведенном ниже коде в функции ‘clica_nome’ строка xpath является переменной. Я уже пробовал это без переменной, но ошибка повторяется.
from selenium import webdriver from selenium.webdriver.common.keys import Keys class ChromeAuto: def __init__(self): self.driver_path = 'chromedriver' self.options = webdriver.ChromeOptions() self.options.add_argument('--profile-directory=1') self.options.add_experimental_option("excludeSwitches", ["enable-automation"]) self.options.add_experimental_option("useAutomationExtension", False) self.chrome = webdriver.Chrome( self.driver_path, options=self.options ) def acessa(self, site): self.chrome.get(site) def busca(self): campo_pesquisa = self.chrome.find_element_by_xpath('//*[@id="textoBusca"]') campo_pesquisa.send_keys('a') self.chrome.find_element_by_xpath('//*[@id="botaoBuscaFiltros"]/span').click() def clica_nome(self): url = 1 xpath = f'/html/body/form/div/div[4]/div/div/div/div[3]/div/div[3]/ol/li[{url}]/b/a' self.chrome.find_element_by_xpath(xpath) def sair(self): self.chrome.quit() if __name__ == '__main__': chrome = ChromeAuto() chrome.acessa('http://buscatextual.cnpq.br/buscatextual/busca.do?metodo=apresentar') chrome.busca() chrome.clica_nome()
Ответ №1:
Одна из причин, по которой я вижу, что ваш xpath неверен. У вас есть буква «f» в начале xpath, которая кажется неправильной.
Правильный-
xpath = '/html/body/form/div/div[4]/div/div/div/div[3]/div/div[3]/ol/li[{url}]/b/a'
И здесь я бы рекомендовал написать относительный xpath и не использовать этот вид абсолютного xpath. Существует очень высокая вероятность того, что xpath может скоро измениться. Если вы можете предоставить html-код страницы, я мог бы помочь вам с относительным xpath.