zoukankan      html  css  js  c++  java
  • selenium

    1.sleep 休眠方法

    • sleep()由python的time模块提供。
    • 当执行到sleep()方法时,脚本会定时休眠所设置的时长,sleep()方法默认参数是s(秒),sleep(2) 表示休眠2s;如果设置时长小于1秒,那就直接写sleep(0.5) 。
    
    # coding:utf-8
    
    # 导入time包
    from time import sleep
    from selenium import webdriver
    driver = webdriver.Firefox()
    driver.get("https://www.baidu.com")
    
    sleep(2)
    driver.find_element_by_id("kw").send_keys("selenium")
    
    sleep(1.5)
    driver.find_element_by_id("su").click()
    
    

    2.隐式等待 implicitly_wait()

    • 隐式等待是通过一定的时长等页面元素全部加载完成(就是等待页面左上角转圈结束)。如果超出了设置的时长,元素还没有加载出来,那么就会抛出异常 NoSuchElementException

    • 隐式等待是全局的,只写一次就行了。

    • 弊端:有些网站页面写得不好,js报错,一直在转圈,那么就会消耗时间,影响效率。

    • 页面跳转的时候,不知道去等第二个页面

    • Implicitly_wait(10)默认参数的单位是秒,这里10秒并不是固定的等待时间,当脚本定位不到这个元素时,
      它将以轮询的方式不断地判断元素是否是否被定位到,如果超过了10秒还是定位不到元素,那么就会抛出异常。

    
    # coding:utf-8
    
    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.implicitly_wait(10)
    driver.get("https://www.baidu.com")
    
    driver.find_element_by_id("kw1").send_keys("python")
    
    
    • 元素定位不到,抛出异常:
      selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"kw1"}

    3.显式等待 WebDriverWait()

    • 首先打开源码看一下,源码的位置

    • 看一下源码中,WebDriverWait每个参数的意思

    • driver :webdriver的实例
    • timeout :超时的总时长
    • poll_frequency :循环查询的间隔时间,默认为0.5s
    • ignored_exceptions :忽略异常,默认忽略 NoSuchElementException
    # coding:utf-8
    
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    driver = webdriver.Firefox()
    driver.implicitly_wait(10)
    driver.get("https://www.baidu.com")
    
    element = WebDriverWait(driver, 15).until(lambda x: x.find_element_by_id("kw"))
    print(element)
    
    
    • 有个不好的地方就是,找不到元素只会报一个异常 TimeoutException,
      所以调试的时候还是要先用常规的方法,先定位好,然后再封装成显式等待的方法
  • 相关阅读:
    Linux内核驱动--硬件访问I/O【原创】
    Linux内核驱动--mmap设备方法【原创】
    Linux系统调用的运行过程【转】
    蓝牙Bluetooth技术手册规范下载【转】
    FarBox--另类有趣的网站服务【转】
    蓝牙HID协议笔记【转】
    linux 串口0x03,0x13的问题【转】
    CC254x/CC2540/CC2541库函数速查(转)
    BLE获取iphone mac地址的方法--【原创】
    用secureCRT操作ubuntu终端
  • 原文地址:https://www.cnblogs.com/wwho/p/8377802.html
Copyright © 2011-2022 走看看