selenium 设置超时时间,抛出异常后,不能用find方法继续处理

新手上路,请多包涵

使用selenium爬取人大经济论坛,登陆的时候,页面一直不加载完成,一直在刷新,应该是强制登陆页面一直刷新。
用webdrive的get方法,只能在页面加载完成后才能后续操作,所以,设置了强制加载时间。
这个设置会抛出一个timeout错误,使用pass处理后,继续后边的操作。
后面的操作里又要在webdriver的返回值里查找,
查找的时候,又抛出异常

driver = webdriver.Chrome()
driver.set_page_load_timeout(10)

try:
    driver.get('http://bbs.pinggu.org/plugin.php?id=dsu_paulsign:sign')
except:    # 异常处理
    pass                # 当页面加载时间超过设定时间,执行后续动作
print('已转入登录页面')

username = input('请输入您的人大经济论坛账号:')
password = input('请输入您的人大经济论坛密码:')
try:
    driver.find_element_by_xpath('//*[@name="username"]').send_keys(username)
except:
    pass
driver.find_element_by_xpath('//*[@name="password"]').send_keys(password)
driver.find_element_by_xpath('//*[@name="loginsubmit"]').click()
print('已实现登录')

错误信息:

Traceback (most recent call last):
  File "D:/OneDrive/CODE/Python Scripts/Tool/12.py", line 27, in <module>
    driver.find_element_by_xpath('//*[@name="password"]').send_keys(password)
  File "D:\Program Files\Python 3.5\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 365, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "D:\Program Files\Python 3.5\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 843, in find_element
    'value': value})['value']
  File "D:\Program Files\Python 3.5\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 308, in execute
    self.error_handler.check_response(response)
  File "D:\Program Files\Python 3.5\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout
  (Session info: chrome=61.0.3163.100)
  (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.15063 x86_64)
阅读 23.3k
1 个回答

异常处理但是网站已经加载ok了,使用finally关键字,继续执行下去
clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题