为啥它不会将_keys 发送到评论框?
Posted
技术标签:
【中文标题】为啥它不会将_keys 发送到评论框?【英文标题】:Why won't it send_keys to the comment box?为什么它不会将_keys 发送到评论框? 【发布时间】:2019-05-06 22:55:25 【问题描述】:我正忙于创建一个 Instagram 机器人,它会自动对我的 Instagram 供稿中的帖子发表评论。问题是当我尝试将_keys 发送到评论框时它不起作用。我设置了登录屏幕来发送密钥,它运行良好,但为什么这一步不起作用?
这是我的代码:
def send_comment(self):
self.browser.get('https://www.instagram.com/')
actionChain = webdriver.ActionChains(self.browser)
comment = self.browser.find_elements_by_css_selector('form input')[0]
comment.send_keys("Great")
comment.send_keys(Keys.ENTER)
print('sent comment')
这是出现的错误:
selenium.common.exceptions.WebDriverException: Message: invalid argument:
File not found : Great
所以我认为它可能正在寻找文件路径。我创建了一个文本文档,其中包含我想提交的评论,括在括号内(标准 Python 格式)。以这种格式:
comment.send_keys("C:/Users/bbrown/Desktop/comment_doc.txt")
但是,现在这给了我一个不同的错误:
selenium.common.exceptions.WebDriverException: Message: invalid argument:
在打开 Instagram 的网络浏览器上,它会在尝试运行该部分代码时显示一条消息。 “上传失败。只能上传图片。”。所以我不相信这是正确的格式。我哪里错了?任何帮助都会很棒!
【问题讨论】:
似乎是您指向错误的元素。您是否在开发工具中检查了 css。 “开发工具”是什么意思?我通过 chrome 检查 html 源代码,它指向一个 您可以尝试将线路更改为comment = self.browser.find_element_by_css_selector('form input:nth-of-type(1)')
。尝试添加预期条件以确保该元素已加载到页面上。
开发工具,正如@supputuri 所提到的,是一个包含在 FF 或 Chrome(和其他)中的工具,可以帮助您检查 HTML 的代码,它允许您在页面上执行一些 javascript 命令.了解它是必不可少的。请看:developers.google.com/web/tools/chrome-devtools
【参考方案1】:
在使用 Selenium 时应该记住一些事情,比如等待一段时间。 Selenium 代码将执行得非常快,但是当您必须在元素上找到网页时,这将取决于 Internet 的速度和您的硬件。因此,为避免“没有这样的元素”错误,您应该包含 sleep()
或wait
命令直到某个元素可见。我更喜欢使用time.sleep(time_amount_in_sec)
。
如果您在谈论评论部分,请务必在开始发送密钥之前单击它以避免错误。 here 描述了一个非常相似的机器人。
代码中的一个 sn-p 是:
def comment(i):
list1=["niceeee ","aweeesome ","supeeerr ","cooool "]
list2=[":)", ";)",":o"]
p=random.randint(0,3)
q=random.randint(0,2)
paste=list1[p]+list2[q]
a=br.find_element_by_class_name('_b6i0l').click()
time.sleep(1.85)
b=br.find_element_by_xpath("//*[@class='_bilrf']")
b.send_keys(paste)
b.send_keys(Keys.ENTER)
time.sleep(2)
with open('commented.txt','a') as f:
x=str(i)
f.write('%s\n'%x)
return()
希望对您有所帮助。
注意- 这是旧的,因此请尝试相应地更改类,因为它们经常更改网站类。
【讨论】:
以上是关于为啥它不会将_keys 发送到评论框?的主要内容,如果未能解决你的问题,请参考以下文章
为啥这个 PHP 电子邮件脚本不会发送到我的 Yahoo 电子邮件?
使用 JavaScript Fetch 和 POST 发送表单数据,然后在 PHP 中处理它
为啥我得到“[__NSArrayI allKeys]:无法识别的选择器发送到实例”/为啥 NSDictionary 正在转换?
为啥我得到“[__NSArrayI allKeys]:无法识别的选择器发送到实例”/为啥 NSDictionary 正在转换?