2.1自动化环境搭建

2.1.1配置浏览器驱动

  1. IEDDriver.exe,驱动下载地址:http://selenium-release.storage.googleapis.com/index.html
  2. Firefox,selenium3不支持47版本一下的Firefox浏览器,所以需要确保浏览器为最新版本。驱动下载地址:https://github.com/mozilla/geckodriver/releases
  3. 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()方法表示只要有一个符合条件的元素加载出来就通过。

posted on 2021-04-17 16:37  paomianzhong  阅读(393)  评论(0)    收藏  举报