Не могу напечатать в Python - PullRequest
0 голосов
/ 10 апреля 2020

Я изучал Python в последние несколько недель, чтобы автоматизировать работу для своего бизнеса.

В основном я должен сделать webscraping, но у меня возникли проблемы с функцией печати в ближайшем будущем. последняя строка кода ...

def search_time(self):
    for item in self.items:
        print(f"Procurando {item}.")

        self.driver.get(self.bot_url)

        cpfBox = self.driver.find_element_by_xpath('//*[@id="search"]/div/div[1]/input')
        cpfBox.send_keys(item)

        time.sleep(2)

        cpfButton = self.driver.find_element_by_xpath('//*[@id="search"]/div/div[2]/button')
        cpfButton.click()

        time.sleep(2)

        self.delay = 3  # seconds



    try:
        WebDriverWait(self.driver, self.delay).until(EC.presence_of_element_located((By.XPATH, '//*[@id="main"]/div[1]/h2')))
        print('CPF Valido')
    except TimeoutException:
        print('CPF Invalido')

        time.sleep(2)

        name = self.driver.find_element_by_xpath("/html/body/main[1]/div[1]/div[1]/div[1]/div[1]/h2").text
        print(name)

        time.sleep(2)


items = ["32911769953"]


bot_url = BOT(items)
bot_url.search_time()

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Во-первых, я бы порекомендовал обобщить ваш запрос xpath. В настоящее время это сильно зависит от структуры всей страницы. Небольшое изменение макета в несвязанной части страницы может привести к нежелательным результатам. Просмотрите xpath синтаксис использование // и предикаты избавят вас от многих головных болей в будущем.

Если это не поможет, пожалуйста, опубликуйте html, который вы пытаетесь проанализировать .

0 голосов
/ 10 апреля 2020

Проверьте, действительно ли xpath является правильным путем к тексту, который вы хотите получить через селен.

Если это веб-сайт, вы можете go к элементу, который вы пытаетесь найти, и щелкните правой кнопкой мыши и выберите Копировать XPATH.

try:
    WebDriverWait(self.driver, self.delay).until(EC.presence_of_element_located((By.XPATH, '//*[@id="main"]/div[1]/h2')))
    name = self.driver.find_element_by_xpath("/html/body/main[1]/div[1]/div[1]/div[1]/div[1]/h2").text
    print(name)
    time.sleep(2)
    print('CPF Valido')
except TimeoutException:
    print('CPF Invalido')
    time.sleep(2)

...