Могу ли я выбрать кнопку, которая существует несколько раз на странице, используя python и селен? - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь закодировать программу для кого-то, чтобы можно было одновременно отправлять и удалять сообщения в браузерном приложении Discord. (Я думаю, что он хочет использовать это для рассылки спама?) Он сказал мне написать код в Python, поэтому я использовал python с Selenium. На данный момент у меня все работает, вход в систему работает, выбор канала работает, если вы просто вставляете ссылку на канал напрямую. Мне также удалось позволить этому посылать некоторые сообщения. Но проблема в том, что я не знаю, как удалить сообщение после его отправки, потому что сначала нужно нажать кнопку «Еще». Но эта дополнительная кнопка существует на странице несколько раз. Один раз за сообщение. Любые идеи, как я могу выбрать кнопку из моего сообщения, чтобы удалить ее? На данный момент мой код выглядит так:

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from random import randint

Server = "https://discordapp.com/channels/channel-id"
username = '"E-MAIL'
pw = 'PW'
Spam = 'Hello'

class DiscordBot: 
    def __init__(self, username, pw, Spam):
        self.driver=webdriver.Chrome("C:\\Users\Discord Bot\Desktop\chromedriver.exe") 
        self.driver.get(Server) #Discord login page 
        sleep(1)
        self.driver.find_element_by_xpath('//*[@id="app-mount"]/div[1]/div/div[2]/div/form/div/div/div[1]/div[3]/div[1]/div/input')\
            .send_keys(username) #Insert email
        sleep(1)
        self.driver.find_element_by_xpath('//*[@id="app-mount"]/div[1]/div/div[2]/div/form/div/div/div[1]/div[3]/div[2]/div/input')\
            .send_keys(pw) #Insert password
        sleep(1)
        self.driver.find_element_by_xpath('//*[@id="app-mount"]/div[1]/div/div[2]/div/form/div/div/div[1]/div[3]/button[2]')\
            .click() #Login
        sleep(7)
        self.driver.find_element_by_xpath('/html/body/div/div[1]/div/div[2]/div/div/div/div[2]/div[2]/div[2]/div[1]/form/div/div/div/div[3]/div[2]/div')\
            .click() #Select input box
        for i in range(1000):
            Count = 'Number' + str(i)
            self.driver.find_element_by_xpath('/html/body/div/div[1]/div/div[2]/div/div/div/div[2]/div[2]/div[2]/div[1]/form/div/div/div/div[3]/div[2]/div')\
                .send_keys(Spam) #Insert message
            sleep(randint(1, 7))
            self.driver.find_element_by_xpath('//*[@id="app-mount"]/div[1]/div/div[2]/div/div/div/div[2]/div[2]/div[2]/div[1]/form/div/div/div/div[3]/div/div')\
                .send_keys(u'\ue007') #Send message

DiscordBot(username, pw, Spam)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...