呜呼~~~
疑惑解答完了好兴奋,虽然只是一个简简单单的练习,但却出现了千奇百怪的错误。
这个错误真实太刻骨铭心了,原来就是页面没有加载完成,导致我后续的元素找不到。
下面来记录下我学习中所遇到的疑惑以及解决方法。= =
还是那个百度首页下的搜索设置。
代码如下:
报错信息与浏览页停留页面
当时的思路以及想法:
最初,代码运行后的浏览器页面一直停留在搜索设置页面,从没想过是因为页面没有加载完成所导致的。加上代码报错停留在xpath那行,所以我一直死死纠缠觉得是xpath定位不对。xpath的域我写的是最广的,还是定位不到。之后我开始往别的方向想,是不是页面中有iframe呢?查询过后html中并不存在iframe,一个小小的下拉框为什么定位不到呢?我开始在每一个定位下写断言,还是不对,页码执行到xpath那就over了。接下来开始在每一句断言后加sleep,就这样突然成功了。真是
so,小伙伴们,在今后的练习中,一定要记住,等页面加载完成后再继续下面的操作哟~~~
接下来来解释等待页面加载的3中方式:
1.sleep()强制等待,不管你浏览器是否加载完了,程序都得等待3秒(不推荐使用)
2.implicitly_wait(xx)隐形等待。隐性等待对整个driver的周期都起作用,所以只要设置一次即可
3. webDriverWait显性等待。
WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待了。它主要的意思就是:程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException。
来源: http://www.cnblogs.com/8013-cmf/p/6565271.html