1、闪退问题:
由于缺少浏览器对应驱动。谷歌:chromedriver驱动;火狐:geckodriver驱动
查看Chrome版本
查找Chrome和ChromeDriver的对应关系
打开Chrome,在设置 – 关于Chrome下载对应ChromeDriver
ChromeDriver下载地址:
http://chromedriver.storage.googleapis.com/index.html
选择对应版本的ChromeDriver下载
火狐驱动下载时需注意:先查看自己安装浏览器版本,在驱动官方下载对应版本驱动下载完成后,需放在python安装目录下的Scripts文件下,后重启项目,部分电脑需重启电脑。
2、找不到元素分为几种状况:
(1)缺少驱动
缺少驱动:根据上述1、下载驱动,即可。
(2)页面嵌套
查看元素所属标签上方是否存在iframe标签,或者新的、等标签,如存在,就需使用先进入新页面再查找元素。
参考阅读:Selenium常见问题——定位子窗口(frame)内元素失败
(3)页面元素未加载
出现这个问题是由于页面存在异步加载的情况,在网页上,页面已经展示出来,但实际元素,还未加载完成,就去查找元素进行操作,就会造成元素未找到,进而保持错,那么如何避免这种情况呢,那就是等待,强制等待或者隐式等待,等待元素加载完成
强制等待:time.sleep(等待时间)
隐式等待
如果强制等待时间过长,可选择隐式等待,通过添加 implicitly_wait() 方法就可以方便的实现隐式等待;implicitly_wait(30) 的用法应该比 time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。
# -*- coding:utf-8 -*-
from selenium import webdriver
import time #调入time函数
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.implicitly_wait(30) #智能等待30秒
driver.find_element_by_id("kw").send_keys("python")
driver.find_element_by_id("su").click()
隐式等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。
提醒:隐性等待对整个driver的周期都起作用,所以只要设置一次即可。
(4)浏览器没有设置成最大,导致打开的页面找不到
运行自动化程序时,程序默认打开的浏览器窗口较小,导致后缀栏位显示不足,就会导致找不到对应元素。
解决方法:
只需要在程序打开网站时,设置浏览器最大化。driver.maximize_window()
设置浏览器最大化
# -*- coding:utf-8 -*-
from selenium import webdriver
import time #调入time函数
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.implicitly_wait(30) #智能等待30秒
driver.maximize_window() #将浏览器最大化
设置浏览器宽度、高度
# -*- coding:utf-8 -*-
from selenium import webdriver
import time #调入time函数
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.implicitly_wait(30) #智能等待30秒
driver.set_window_size(800,500) #设置浏览器宽800、高500显示
如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片进群即可自行领取。