小白刚开始学习 python,打算写个贴吧自动回复的程序练练手。
本来在 Windows 下已经调试好了,原代码如下:
from selenium import webdriver
from time import sleep
def cookie():
cookies='''
BDUSS=xxxx
STOKEN=xxxx
'''
for lines in cookies.split():
name = lines.split('=')[0]
value = lines.split('=')[1]
browser.add_cookie({"name":name,"value":value})
browser.refresh()
def reply():
content = 'test'
js = "document.getElementById('ueditor_replace').innerHTML='%s'" % content
browser.execute_script(js)
browser.find_element_by_css_selector('.poster_submit').click()
def main():
browser.get('https://tieba.baidu.com/p/xxxxxxxxx')
sleep(5)
cookie()
browser.execute_script("window.scrollTo(0,document.body.scrollHeight);")
sleep(5)
reply()
sleep(5)
browser.close()
browser = webdriver.Chrome()
if __name__ == '__main__':
main()
放在 Ubuntu 服务器上却有些问题>﹏<
由于服务器没有图形界面,运行时会报错:
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally.
查了一下需要设置为无头浏览器模式,于是添加了以下部分:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
browser = webdriver.Chrome(options=chrome_options)
可以正常运行 selenium 后,又报 JS 代码的错误
selenium.common.exceptions.JavascriptException: Message: javascript error: Cannot set property 'innerHTML' of null
说 reply 部分的 JS 代码将 innerHTML 设置为空,但我没有设置为空呀,不懂 JS,真心求教!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.