我想通过他们的网站在Instagram上发送多条信息。到目前为止,我可以登录并打开特定的人的dm,我想选择文本框并发送一些信息。我想选择文本框并发送一些信息。我正在尝试以下代码
messageBox = driver.find_element_by_xpath("//*[@class=' Igw0E IwRSH eGOV_
vwCYk ItkAi
']")
messageBox.click()
messageBox.send_keys("test")
send = driver.find_element_by_xpath("//button[@class='sqdOP yWX7d y3zKF ']")
send.click()
它引发的错误是:该元素(messageBox)目前无法交互。
我也试过用javascript输入。
messageBox = driver.find_element_by_xpath("//*[@class=' Igw0E IwRSH eGOV_
vwCYk ItkAi
']")
driver.execute_script("arguments[0].value = 'test';", messageBox)
然而,这并没有输入任何东西,也没有出现任何错误。我应该怎么做?
我想输入的内容要么是隐藏的,要么是容量设置为0。
如果容量设置为0,请尝试以下方法
JavascriptExecutor js = (JavascriptExecutor) getDriver();
js.executeScript("document.querySelector(\"yourSelector\").style.opacity='1'");
然后尝试发送键值
如果是隐性输入,就用这个
document.querySelector(\"yourSelector\").style.display ='active'
然后尝试发送键值
我尝试了很多东西,但最后,这工作了。
messageBox = driver.find_element_by_tag_name("textarea")
messageBox.click()
messageBox.send_keys("test")
以下是完整的代码,如果有人想知道
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.instagram.com/")
username = "" #your username
password = "" #password
time.sleep(2)
#login
usernamefield = driver.find_element_by_name("username")
usernamefield.click()
usernamefield.send_keys(username)
passwordfield = driver.find_element_by_name("password")
passwordfield.click()
passwordfield.send_keys(password)
login = driver.find_element_by_xpath("//*[@class=' Igw0E IwRSH eGOV_ _4EzTm ']")
login.click()
time.sleep(5)
popup = driver.find_element_by_xpath("//*[@class='aOOlW HoLwm ']")
popup.click()
driver.get("https://www.instagram.com/direct/inbox/")
time.sleep(2)
#select the first person on your dm list
contact = driver.find_element_by_xpath("//*[@class='-qQT3 rOtsg']")
contact.click()
time.sleep(2)
#send messages in succession
message = "" #your message
for i in range(500):
messageBox = driver.find_element_by_tag_name("textarea")
messageBox.click()
messageBox.send_keys(message)
send = driver.find_element_by_xpath("//*[@class=' Igw0E IwRSH eGOV_ _4EzTm JI_ht ']")
send.click()