• selenium(一)


    一、原理

      在客户端完成selenium脚本的编写,将脚本传送给selenium服务器,selenium服务器使用浏览器驱动(driver)与浏览器(browser)进行交互。

    二、核心组件

      WebDriver:使用浏览器提供的API控制浏览器,模拟用户操作浏览器; 

      IDE:录制      

      Grid:分布式

    三、安装

      pip3 install selenium

       各浏览器驱动下载地址:http://www.seleniumhq.org/download/

    四、demo1

    1 # 百度一下
    2 
    3 from selenium import webdriver
    4 
    5 def test_search():
    6     driver = webdriver.Chrome()
    7     driver.get('https://www.baidu.com')
    8     search = driver.find_element_by_id('su').get_attribute('value')
    9     assert search == '百度一下'
    View Code

    五、等待方式

      1)显式等待

    from selenium.webdriver.support import expected_conditions
    from selenium.webdriver.support.wait import WebDriverWait
    
    # 显示等待
    WebDriverWait(self.driver,10).until(
             expected_conditions.element_to_be_clickable(By.ID,'su')
            )

      2)隐式等待

    # 隐式等待
    self.driver.implicitly_wait(5)

      3)强制等待

    import time
    
    time.sleep(3)

      4) demo

     1 # 访问爱测 https://home.testing-studio.com,点击所有分类,点击答疑区
     2 # 三种等待方式:强制等待、显示等待、隐式等待
     3 
     4 
     5 import time
     6 from selenium import webdriver
     7 from selenium.webdriver.common.by import By
     8 from selenium.webdriver.support import expected_conditions
     9 from selenium.webdriver.support.wait import WebDriverWait
    10 
    11 
    12 class TestHogwarts():
    13     def setup(self):
    14         self.driver = webdriver.Chrome()
    15         self.driver.get('https://home.testing-studio.com')
    16         # 隐式等待
    17         self.driver.implicitly_wait(5)
    18 
    19     def teardown(self):
    20         time.sleep(3)
    21         self.driver.quit()
    22 
    23 
    24     def test_hogwarts(self):
    25         # 点击所有分类
    26         category_name = (By.XPATH,'//*[@id="ember139"]/div/span/span[2]/span')
    27         print(category_name)
    28         time.sleep(3)
    29         print('test')
    30         self.driver.find_element_by_xpath('//*[@id="ember21"]').click()
    31         time.sleep(3)
    32         # 显示等待
    33         WebDriverWait(self.driver,10).until(
    34             expected_conditions.element_to_be_clickable(category_name)
    35         )
    36         self.driver.find_element(*category_name).click()
    37         # self.driver.find_element_by_xpath('//*[@id="ember139"]/div/span/span[2]/span').click()
    View Code

    六、常见定位方式

      1)根据id定位

    driver.find_element_by_id('su')

      2)根据name定位

    driver.find_element_by_name('wd')

      3)根据XPATH定位 (xml path language)

    driver.find_element_by_xpath('//*[@id="su"]')

      验证XPATH定位是否正确,可以使用console输入$x('//*[@id="su"]')

      4)根据CSS定位 (css_selector) 

    driver.find_element_by_css_selector('#su')

      定位class=one        .one

      定位id=one    #one

       5)  根据link定位

    # 全部匹配
    driver.find_element_by_link_text('欢迎光临')
    # 部分匹配
    driver.find_element_by_partial_link_text('欢迎')

          6)  根据tag定位

    driver.find_element_by_tag_name('input')

       7)  根据class_name定位

    driver.find_element_by_class_name('active')

    六、selenium常见操作

      1)输入、点击、清除

        对应selenium中的send_keys、click、clear

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    driver.find_element_by_name('wd').send_keys('码学课堂')
    driver.find_element_by_id('su').click()
    driver.find_element_by_name('wd').clear() 

      2)关闭窗口、浏览器

         关闭当前句柄close(),关闭整个进程quite()

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    # 关闭当前窗口
    driver.close()
    # 关闭浏览器
    driver.quit()

      3)获取元素属性

         获取元素标签上的属性get_attribute(''value)

         元素的坐标location

         元素的大小size

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    search = driver.find_element_by_id('su')
    print(search.get_attribute('value'))
    print(search.location)
    print(search.size)
    
    
    输出:
    百度一下
    {'x': 844, 'y': 188}
    {'height': 44, 'width': 108}

      4)获取网页源代码、刷新页面

         网页源代码page_source

           刷新页面refresh()

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    # 刷新页面
    driver.refresh()
    # 打印当前页面的源码
    print(driver.page_source)

      5)设置窗口大小

         最小化窗口minimize_window()

         最大化窗口maximize_window()

         设置窗口的具体大小set_window_size(width,height)

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    # 最小化窗口
    driver.minimize_window()
    # 最大化窗口
    driver.maximize_window()
    # 将浏览器设置为1000*1000的大小
    driver.set_window_size(1000,1000)

     

  • 相关阅读:
    字典序 动物统计 输出姓名和个数
    心急的C小加
    docker rabbitmq
    Docker Device Mapper 使用 direct-lvm
    FW docker使用问题总结,解决国内不能访问gcr.io的问题
    巧用AWK处理二进制数据文件
    Webshell清除-解决驱动级文件隐藏挂马
    phantomflow phantomcss, phantomas
    cobbler, puppet
    java javassis crack class
  • 原文地址:https://www.cnblogs.com/hd-test/p/13192273.html
Copyright © 2020-2023  润新知