我创建了一个黑手党机器人来搜索论坛帖子并收集玩家投票信息,并在完成后发布命令后发布信息。
一切都运行正常,除了有时当我调用post()函数时,我的代码中的换行没有被显示,因此所有内容都被拼凑到一行上。
奇怪的是,当我手动调用post()函数时,我没有遇到这个问题,但是大约每70-100次运行一次,bot会遇到这个问题并吐出这个错误:
#include <stdio.h>
#include <unistd.h>
int main(void) {
printf("Here be demo");
fflush(stdout);
sleep(1);
printf("\r\033[2KIt works!\n");
}
我发现错误消息令人困惑的事情&#34;无法找到元素&#34;是机器人仍在发布消息,但遗漏了我的所有&#39; \ n&#39;字符。该元素已被清楚地定位,因为Web驱动程序仍然将密钥发送到文本框中,因此我不确定为什么会出现此错误。
这是有问题的功能:
File "C:\Users\Ironstove\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 309, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "C:\Users\Ironstove\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 787, in find_element
'value': value})['value']
File "C:\Users\Ironstove\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in execute
self.error_handler.check_response(response)
File "C:\Users\Ironstove\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="cke_contents_vB_Editor_QR_editor"]/textarea"}
(Session info: chrome=59.0.3071.115)
(Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 6.1.7601 SP1 x86_64)
以下是该帖子通常在大多数情况下的样子:
https://puu.sh/wNpbb/8be30d6538.png
以下是新线消失时的样子:
https://puu.sh/wNpbJ/98481cd967.png
我刚刚在功能开始时添加了睡眠计时器,因为网站没有完全加载,但我不相信这是问题(只是在黑暗中拍摄)。如果有人知道问题是什么,我会非常感激!
修改: 在进一步阅读和测试之后,我发现问题出在Chrome webdriver上,并且看起来element.send_keys在处理大量文本块时会出现此问题&gt; 100个字符。我解决这个问题的方法是将文本分块,到目前为止一切正常。我会继续运行,希望看不到任何进一步的问题。