美文网首页
Python3+Selenium3自动化测试

Python3+Selenium3自动化测试

作者: 欢乐的乐 | 来源:发表于2018-08-25 17:34 被阅读170次

    配置好Python环境和Selenium后,使用PyCharm开始自动化测试吧。

    Hello 自动化测试

    from selenium import webdriver
    import time
    
    
    dr = webdriver.Firefox()  # 初始化火狐浏览器实例
    dr.maximize_window()  # 最大化浏览器
    dr.get("http://www.baidu.com/")  # 通过get方法打开一个url网站
    print(dr.title)  # 打印页面title
    
    dr.find_element_by_id("kw").send_keys("python")  # 获取id是'kw'的元素,设置值为'Python'
    time.sleep(3)  # 强制等待3秒
    dr.find_element_by_id("su").click()  # 获取id是'su'的元素,点击一下
    time.sleep(3)  # 强制等待3秒
    dr.quit()  # 关闭浏览器
    

    运行!就能看到效果了。
    其中time.sleep(3)强制等待3秒才执行下面的步骤,有可能3秒过后网页还没有加载完,会发生不知名的错误。
    那就把3变大一点变成10,time.sleep(10)。如果这样自动化的效率就很低了。🤣

    time.sleep()这是非常重要的一部分
    例如在爬取使用ajax、js等方法编写的网页就不能确定我们定位的元素是否已经加载出来了。当元素未加载出来时,我们就去调用当然会时常遇到报错的情况。

    在处理这些界面读取时常采用以下两种方法。
    方法一 time.sleep() 不推荐,固定等待时间不能确定是否足够页面加载完成
    方法二 显式等待 指满足某一条件之后再执行后面的代码 可以设置最长的等待时间

    显式等待

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    import time
    
    dr = webdriver.Firefox()  # 初始化火狐浏览器实例
    dr.maximize_window()  # 最大化浏览器
    dr.get("http://www.baidu.com/")  # 通过get方法打开一个url网站
    print(dr.title)  # 打印页面title
    try:
        # 判断页面元素是否已经加载出来  
        element = WebDriverWait(dr, 10).until(EC.presence_of_element_located((By.ID, "kw")))
        dr.find_element_by_id("kw").send_keys("python")
        dr.find_element_by_id("su").click()
    finally:
        time.sleep(3)  # 等待3秒再关闭浏览器
        dr.quit()  # 关闭浏览器
    

    关于CSS定位

    • id属性、class、标签定位他们还能组合在一起使用
      以百度首页为例
      #表示id属性 .表示class属性 标签直接使用
    dr.find_element_by_css_selector("#kw")  
    dr.find_element_by_css_selector(".s_ipt")
    dr.find_element_by_css_selector("input")
    

    其中dr.find_element_by_css_selector("#kw")dr.find_element_by_id("kw")是一样的

    • 组合形式
    dr.find_element_by_css_selector("input.s_ipt")
    
    • 层级关系
      这里是input下的span下的a元素
    dr.find_element_by_css_selector("input > span > a")
    

    相关文章

      网友评论

          本文标题:Python3+Selenium3自动化测试

          本文链接:https://www.haomeiwen.com/subject/bhugiftx.html