2.1自动化环境搭建
2.1.1配置浏览器驱动
- IEDDriver.exe,驱动下载地址:
http://selenium-release.storage.googleapis.com/index.html - Firefox,selenium3不支持47版本一下的Firefox浏览器,所以需要确保浏览器为最新版本。驱动下载地址:
https://github.com/mozilla/geckodriver/releases - Chrom浏览器驱动下载地址:
https://chromedriver.storage.googleapis.com/index.html或者http://npm.taobao.org/mirrors/chromedriver/
2.3.2 多元素定位
当页面有多个input标签时,可以通过标签本身的属性来定位。先获取所有的input标签,然后通过for循环遍历每个对象,最后判断获取的对象中autocomplete属性等于off的元素
tag = dr.find_elements_by_tag_name('input')
for t in tag:
if t.get_attribut('autocomplete') == 'off':
t.send_keys('fighter007')
dr.find_element_by_id('su').click()
dr.quit()
2.3.4 使用JavaScript定位
注意:
除了getElementByID()定位返回单个elements元素外,其他的定位方式都是返回list对象。
2.6 元素等待
强制等待:是Python语言time模块下的sleep()方法,他可以设置固定休眠时间。例如,sleep(5)表示脚本执行到就强制等待5s,等待5s后在执行后面的语句。
隐式等待:implicitly_wait() 是WebDriver提供的一个超市等待方法,比sleep()更加智能。可以理解成在规定时间范围内,浏览器不停地刷新页面,直到找到目标元素。如果在规定时间内找不到目标元素,就抛出异常。不设置时默认是0。
显式等待:明确要等到某个元素的出现或者是某个元素壳蛋鸡。如果等不到,就一直等待下去;除非在规定时间内没找到元素,那么就抛出异常。
代码: element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, 'freename')))
解释:WebdriverWait()是显式等待类。driver是驱动;5表示最长超时时间,单位是s(秒);0.5表示每隔0.5s,即检测元素是否存在的频率,单位为s(秒);until表示在等待期间,每隔一段时间调用这个传入的方法,直到返回值为True;EC.presence_of_element_located()方法表示只要有一个符合条件的元素加载出来就通过。
浙公网安备 33010602011771号