1.时间问题
(1)强制等待
sleep(3)
不管浏览器是否加载完,程序都必须等3秒再执行
(2)隐性等待
implicity_wait(6)
若在3秒定位到了元素则继续执行,若超出6s时间,还没有定位到元素,就抛出异常
隐性等待对整个driver的周期都起作用,不用每一步都设置
(3)显性等待
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 5, 0.5).until(
EC.presence_of_element_located((By.ID, "kw"))
WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待了。它主要的意思就是:程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException
解析:WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
driver:浏览器驱动
timeout:最长超时时间,默认以秒为单位
poll_frequency:检测的间隔时间,默认为0.5s
ignored_exceptions:超时后的异常信息,默认情况下抛出NoSuchElementException异常
WebDriverWait()一般由until()或until_not()方法配合使用,until直到返回值为true,not_until直到返回值为false
2.读取文件
import csv #导入csv模块
date = csv.reader(open('../config/info.csv','r')) #通过read()方法读取csv文件
for user in date: #通过for循环遍历文件中的每一行数据
print(user)
#print(user[1]) #指定读取csv文件中的某一列,下标从0开始
打印结果:读取的每一行数据均是以数组的形式存储的
['user', 'password']
['root', 'zte']
['admin', 'root']
['zte', 'zte']
Process finished with exit code 0