自从发现了这个网页的漏洞,为了鲁一把羊毛,历时三天啊,今下午又与webdriver与动态网页斗争了一下午。。。。。
1.调用chrome,默认调用纯净chrome,一点杂质没有,为了提高自动化测试速度,这也就造成了登录之后的网页记不得我们。所以自动化测试反而很难进行。
解决方法,在初始调用时,使浏览器默认加载本地得到数据:
在浏览器输入:chrome://version,得到如下:
找到个人资料路径,注意最后的default不要添加。。。。(不知道为什么上一次添加了没法使用,这次去掉了就可以使用了。),然后是浏览器启动项设置,如下:
option = webdriver.ChromeOptions()
option.add_argument('--user-data-dir=C:\\Users\\11923\\AppData\\Local\\Google\\Chrome\\User Data')
#设置成用户自己的数据目录
driver = webdriver.Chrome(chrome_options=option)
之后调用就欧克了
----------------------------------------------
2.sele+webdriver 获取动态网页
driver.get(url)
time.sleep(10)
source = driver.page_source
之前的所有工作都没有中间那句time.sleep。因此没有一次成功,得到的全是原始网页,偶然间看到这句话,想了一下,是因为selenium刚开始加载的也是原始网页,但是它本身可以进行解析,而解析的过程需要时间。
如上,爬了一点坑。
------------------------------------------
04-14 更新webdriver实现打开一个窗口之后,不再进行不断的打开关闭窗口这个过程,而是打开新的标签
原理不太清楚,好像是用js
url = "http://www.sougou.com"
driver.execute_script("window.open(url)
运行之后,发现根本打不开新的标签页,但是使用这种格式就行了:
driver.execute_script("window.open(’http://www.sougou.com‘)“)
自然,优先想到的应该是格式问题,搜索了错误原因(在此不得不说,你搜什么都没用,把报错的原因复制粘贴一下,就啥都知道了。)发现改成下面的格式就行了。
url = "http://www.sougou.com"
driver.execute_script("window.open('{}');".format(url))
注意,,动态网页使用selenium没加载出来也是没办法找到元素的。