[bug] 验证selenium的显式和隐式等待而发现的一个低级错误
隐式等待:如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。按照这说法举了个例子为啥不会按照预期执行了,难不成是这个定义有问题(~~~~~直接否定不是定义的问题,相信它们不错,先从自身找问题)
代码如下:
1 # -*- coding:utf-8 -*- 2 ''' 3 Created on Oct 17, 2018 4 5 @author: SaShuangYiBing 6 7 Comment: 8 ''' 9 from selenium import webdriver 10 driver = webdriver.Firefox() 11 driver.implicitly_wait(10) 12 driver.get("https://www.baidu.com") 13 print (driver.current_url)
错误如下:
1 Traceback (most recent call last): 2 File "D:\WorkSpace3\EXAMPLE\Selenium_ex\debug.py", line 11, in <module> 3 driver.implicitly_wait(10) 4 File "C:\Program Files\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 912, in implicitly_wait 5 'implicit': int(float(time_to_wait) * 1000)}) 6 File "C:\Program Files\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute 7 self.error_handler.check_response(response) 8 File "C:\Program Files\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response 9 raise exception_class(message, screen, stacktrace) 10 selenium.common.exceptions.WebDriverException: Message: timeouts
错误信息也出来,但也没用,也还是看不懂不知道是哪里有问题……——……
本着多对比才能知道好坏的道理,我尝试换了个 Chrome,运行正常了,不报错也正常运行了后面的代码,进一步证明先人们的结论是正确的。接下来就很明确了,问题10000%出在 firefox身上,找问题思路:
1、先确定firefox的版本号及是32/64bit ----->是 62.0.3(64bit)
2、确认firefox驱动跟版本匹配关系 ----->根据操作系统要求下载firefox最新驱动
3、到驱动存放文件夹找原始驱动文件进行比对一下大小,确认驱动是否最新 -------->尼玛想骂人了,根本就没找到驱动,驱动哪去了~~~~~~~
4、新最新的 firefox 驱动放到驱动文件夹下,再次运行一次,哇靠成功了。----->所有的浏览器驱动我都统一放到:C:\Program Files\Python36\Scripts,省得放其它地方还要单独添加进环境变量中。
总结:
1、遇到问题,一定要先尝试多种方法进行问题的初步定界
2、养成编程好习惯,要不耻下问,随便到哪里去问(但前提是对别人工作不要有影响)
疑问:
1、为啥我没有添加这个 Firefox 驱动,仍然可以在代码中启动浏览器也可以加载网页并进行元素定位和操作???