• Selenium简介


    官网(https://selenium-python.readthedocs.io/)

    selenium原理

    • 对于每一个selenium脚本,一个http请求会被创建并且发送给浏览器的驱动(即chromeDriver.exe)。
    • 浏览器驱动中包含了一个HTTP Server,用来接收这些http请求
    • HTTP Server 接收到请求后根据请求来具体操纵对应的浏览器
    • 浏览器执行具体的测试步骤,并将步骤结果返回给HTTP Server
    • HTTP Server又将结果返回给Selenium的脚本,如果是错误的http代码我们就会在控制台看到对应的报错信息
    • 因为HTTP协议是一个浏览器和WEB服务器之间通信的标准协议,几乎每一种编程语言都提供了丰富的http libraries,这样就可以方便的处理客户端Client和服务器Server之间的请求request及响应response
    • WebDriver的结构就是C/S结构,WebDriver API相当于是客户端,而浏览器驱动是服务端
    • WebDriver基于的协议是 JSON Wire protocol,这个协议是在http协议的基础上,对http请求及响应的数据做了进一步的规范。在Client和Server之间,只要是基于 JSON Wire protocol 来传递数据,就与具体的脚本语言无关了。

    安装

    pip install selenium
    

    浏览器

    • selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器
    from selenium import webdriver
    browser=webdriver.Chrome()
    browser=webdriver.Firefox()
    browser=webdriver.PhantomJS()
    browser=webdriver.Safari()
    browser=webdriver.Edge()
    
    • 浏览器初始化设置(Chrome浏览器为例)
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_argument('window-size=1920x3000') #指定浏览器分辨率
    chrome_options.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
    chrome_options.add_argument('--hide-scrollbars') #隐藏滚动条, 应对一些特殊页面
    chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
    chrome_options.add_argument('--headless') #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
    chrome_options.binary_location = r"C:Program Files (x86)GoogleChromeApplicationchrome.exe" #手动指定使用的浏览器位置
    
    driver=webdriver.Chrome(chrome_options=chrome_options)
    driver.get('https://www.baidu.com')
    print('hao123' in driver.page_source)
    
    driver.close() #切记关闭浏览器,回收资源
    

    基本使用

    from selenium import webdriver
    from selenium.webdriver import ActionChains
    from selenium.webdriver.common.by import By  # 选择器
    from selenium.webdriver.common.keys import Keys # 键盘按键操作
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素
    
    browser=webdriver.Chrome()
    try:
        browser.get('https://www.baidu.com')
    
        input_tag=browser.find_element_by_id('kw')
        input_tag.send_keys('selenium')
        input_tag.send_keys(Keys.ENTER) #输入回车
    
        wait=WebDriverWait(browser,10)
        wait.until(EC.presence_of_element_located((By.ID,'content_left'))) #等到id为content_left的元素加载完毕,最多等10秒
    
        print(browser.page_source)
        print(browser.current_url)
        print(browser.get_cookies())
    
    finally:
        browser.close()
    
  • 相关阅读:
    flask -服务端项目搭建
    蓝图 Blueprint
    flask-session
    flask-数据库操作 / ORM/Flask-SQLAlchemy/数据表操作/数据操作/数据库迁移
    在 Flask 项目中解决 CSRF 攻击
    Flask-Script 扩展/自定义终端命令/Jinja2模板引擎
    Flask项目创建/http的会话控制/Cookie/Session/请求钩子/异常捕获/context
    redtiger sql injection 练习
    流畅的python--序列构成的数组
    流畅的python--python的数据模型
  • 原文地址:https://www.cnblogs.com/iamluoli/p/11231655.html
Copyright © 2020-2023  润新知