Python里面模拟登陆Weibo Element is not currently interactable,weibointeractable,代码来源我用的py2,改


代码来源
我用的py2,改动了点

#encoding=utf-8import timefrom selenium import webdriverimport requests# 该段代码在ubuntu上能成功运行,并没有在windows上面运行过# 直接登陆新浪微博url = 'http://weibo.com/login.php'driver = webdriver.PhantomJS()driver.get(url)print(u'开始登陆')# 定位到账号密码表单login_tpye = driver.find_element_by_class_name('info_header').find_element_by_xpath('//a[2]')login_tpye.click()time.sleep(3)name_field = driver.find_element_by_id('loginname')name_field.clear()name_field.send_keys('youraccount')password_field = driver.find_element_by_class_name('password').find_element_by_name('password')password_field.clear()password_field.send_keys('yourpassword')submit = driver.find_element_by_link_text(u'登录')submit.click()# 等待页面刷新,完成登陆time.sleep(5)print('登陆完成')sina_cookies = driver.get_cookies()cookie = [item["name"] + "=" + item["value"] for item in sina_cookies]cookiestr = '; '.join(item for item in cookie)# 验证cookie是否有效redirect_url = 'http://weibo.com/p/1005051921017243/info?mod=pedit_more'headers = {'cookie': cookiestr}html = requests.get(redirect_url, headers=headers).textprint(html)#报错信息如下:开始登陆<selenium.webdriver.remote.webelement.WebElement (session="2151def0-f283-11e6-9463-198aed0167cd", element=":wdc:1487055608184")>Traceback (most recent call last):  File "weibo.py", line 20, in <module>    name_field.clear()  File "d:\python27\lib\site-packages\selenium\webdriver\remote\webelement.py",line 87, in clear    self._execute(Command.CLEAR_ELEMENT)  File "d:\python27\lib\site-packages\selenium\webdriver\remote\webelement.py",line 461, in _execute    return self._parent.execute(command, params)  File "d:\python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute    self.error_handler.check_response(response)  File "d:\python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response    raise exception_class(message, screen, stacktrace)selenium.common.exceptions.InvalidElementStateException: Message: {"errorMessage":"Element is not currently interactable and may not be manipulated","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"81","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:54244","User-Agent":"Python-urllib/2.7"},"httpVersion":"1.1","method":"POST","post":"{\"sessionId\": \"2151def0-f283-11e6-9463-198aed0167cd\",\"id\": \":wdc:1487055608184\"}","url":"/clear","urlParsed":{"anchor":"","query":"","file":"clear","directory":"/","path":"/clear","relative":"/clear","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/clear","queryKey":{},"chunks":["clear"]},"urlOriginal":"/session/2151def0-f283-11e6-9463-198aed0167cd/element/:wdc:1487055608184/clear"}}Screenshot: available via screen

stackoverflow答案
driver.set_window_size(1920, 1080)

编橙之家文章,

评论关闭