使用python在youtube上使用selenium发送消息

2024-04-25 00:41:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用python和selenium编写一个脚本,在youtube直播流上发送一条消息作为赠品,我成功地完成了大部分任务,直到上线(33),我试图通过(.find_element_by_…?)找到youtube的实时聊天框它显示了各种各样的错误,比如,AttributeError:'WebDriver'对象没有属性或者无法通过··············。。。?'通过文本、xpath和,id.等级等等

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:\Projects\python 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()

Tags: divsendidbytimeyoutubedriverbutton
3条回答

不要使用[@id=“input”]它也是为另一个元素指定的。你不会得到元素。使用类名{yt live chat text input field renderer style scope}这是唯一的,您将通过这个类名获取元素。 你把文本发送到错误的元素 driver.find_element_by_文本('Say somthing…')。发送密钥('#PUBGMOBILE') 这是标签不是文本框。在

基本上,div与'input'事件相关联,因此一旦在div中输入值,就必须分派'input'事件。 下面是我能够从控制台成功执行的代码(仅供参考,这是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行元素上的fireevent“input”

^{pr2}$

应该很神奇,因为我的机器上没有EclipseJava环境,所以无法测试上面的代码。测试一下,让我们知道。在

有关fireevent实现的更多信息,请参阅Selenium FireEvent文档。在

您可以像以前一样使用xpath,而不是通过它的文本来查找元素。我刚刚查看了一个YT livestream的聊天框,xpath似乎被称为//*[@id="input"]

编辑: 另外,在您输入文本之前,您需要先单击元素,这可能是一个棘手的问题。在

相关问题 更多 >