Невозможно найти элемент, используя «self.driver.find_element_by_xpath», как его обработать? - PullRequest
0 голосов
/ 19 февраля 2020

Я использую библиотеку селена для управления веб-сайтами на Chrome, поэтому я использовал self.driver.find_element_by_xpath, чтобы найти элемент на веб-сайте, но когда элемент не найден, программа останавливается. Что я могу сделать, чтобы программа изменила элемент на найденный, если последний не найден? У меня есть список элементов, которые нужно найти на этом сайте, поэтому, если элемент не найден, я должен найти следующий элемент без остановки.

К счастью

Это моя программа:

from selenium import webdriver
import time
import winsound

class WhatsappBot:
    def __init__(self):
        x = 1
        self.mensagem = "mensage"
        self.mensagem2 = "mensage2"
        self.grupos = ["person1","person2"]
        options = webdriver.ChromeOptions()
        options.add_argument('lang-pt-br')
        self.driver = webdriver.Chrome(executable_path=r'./chromedriver.exe')

    def EnviarMensagens(self):
        #<input type="text" class="_2zCfw copyable-text selectable-text" data-tab="2" dir="auto" title="Search or start new chat" value="">
        #<div tabindex="-1" class="_13mgZ"><div tabindex="-1" class="_3FeAD _1PRhq">
        #<span data-icon="send" class=""><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="#263238" fill-opacity=".45" d="M1.101 21.757L23.8 12.028 1.101 2.3l.011 7.912 13.623 1.816-13.623 1.817-.011 7.912z"></path></svg></span>
        self.driver.get('https://web.whatsapp.com')
        time.sleep(20)
        for grupo in self.grupos:
            chat_box1 = self.driver.find_element_by_xpath("//input[@type='text']")
            time.sleep(0.03)
            chat_box1.click()
            time.sleep(3)
            chat_box1.send_keys(grupo)
            time.sleep(1)
            grup = self.driver.find_element_by_xpath(f"//span[@title='{grupo}']")
            time.sleep(0.03)
            grup.click()
            chat_box = self.driver.find_element_by_class_name('_13mgZ')
            time.sleep(0.03)
            chat_box.click()
            chat_box.send_keys(self.mensagem)
            botao_enviar = self.driver.find_element_by_xpath("//span[@data-icon='send']")
            time.sleep(0.03)
            botao_enviar.click()
            chat_box.send_keys(self.mensagem2)
            botao_enviar = self.driver.find_element_by_xpath("//span[@data-icon='send']")
            time.sleep(0.03)
            botao_enviar.click()
            time.sleep(0.04)


bot = WhatsappBot()
bot.EnviarMensagens()
b=winsound.Beep
b(1000,10000)
exit
``
...