Я не могу найти xpath по ссылке

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