使用Python在与Selenium的YouTube实时聊天上发送消息



我试图使用python和selenium制作脚本,以在youtube live流上进行按摩以供赠品,我能够成功地完成大部分任务,直到上线为止(33(33)(33)),我试图在哪里找到YouTube实时聊天框( .find_element_by _... ?)它显示出各种错误或无法找到element_by _...??

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
email = ''
password = ''
gmail_link = 'http:\www.gmail.com'
driver = webdriver.Firefox('D:Projectspython projects')
driver.get(gmail_link)
time.sleep(4)
#email send_keys
driver.find_element_by_id('identifierId').send_keys(email)
#Email_next button xpath.click
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[2]/div[2]   /div/div/div[2]/div/div[2]/div/div[1]/div/content/span').click()
time.sleep(4)
#password xpath
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[2]/div[2]/div/div/div[2]/div/div[1]/div/form/content/section/div/content/div[1]/div[1]/div/div/div/div/div[1]/div/div[1]/input').send_keys(password)
time.sleep(2)
#password button xpath.click
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[2]/div[2] /div/div/div[2]/div/div[2]/div/div[1]/div/content/span').click()
time.sleep(5)

#A random youtube live link
driver.get('https://www.youtube.com/watch?v=VTqTnbe6b1g')
time.sleep(5)
# youtube live chat box
driver.find_element_by_text('Say somthing...').send_keys('#PUBGMOBILE')
time.sleep(3)
# youtube live chat box button
driver.find_element_by_id('//*[@id="button"]').click()

基本上DIV与'输入'事件关联,因此在DIV中输入值后,您必须派遣'输入'事件。这是我能够成功地形成控制台的代码(FYI这是JS,您可以在测试和语言中使用相同的逻辑)。

ele = document.querySelector('div#input')
ele.textContent = 'test this sample data'
ele.dispatchEvent(new Event('input',{'bubles':true, 'cancelable':true}))

第1行是CSS

等于FindElemnt

第2行输入输入

第3行元素上的"输入"

WebElement chatEle = driver.find_element(By.CSS_SELECTOR('div#input')
chatEle.sendKeys "sample data"
driver.fireEvent(chatEle,"input")

应该做魔术,无法测试上面的代码,因为我的机器上没有Eclipse Java环境。测试它并让我们知道。

请参阅Selenium Fireevent文档以获取有关Fireevent实施的更多信息。

而不是通过其文本寻找元素,您可以像以前一样使用其xpath。我只是查看了chatbox的yt livestream,xpath似乎称为 //*[@id="input"]

编辑:另外,在输入文本之前,您需要先单击元素可能会有一些棘手的事情。

不要使用[@ID =" input"],也给出了另一个元素。您将不会得到元素。使用类名称{yt-live-chat-text-input-field-drender style-cope}这是唯一的,您将通过此类名称获得该元素。您将文字发送给错误的元素 driver.find_element_by_text('Say sosing ...')。send_keys('#pubgmobile')这不是文本框。

最新更新