zoukankan      html  css  js  c++  java
  • selenium八大定位元素




    1,动态数据加载的概念

    1.1, 什么是动态数据加载
    1.2, 动态数据加载跟爬虫有啥关系
    	requests模块  
    				----》它们在发起请求爬取数据的过程中,不能够执行js代码
    	scrapy 框架
    1.3,用到一个---->selenium是一个web端自动化测试框架
    

    2,selenium的介绍

    selenium是一个web端自动化测试框架,程序员可以通过代码来控制浏览器,比如说打开网页,关闭浏览器,点击一下,比如说拖动,向下滚动,向左右滚动
    作用:帮助抓取动态加载的数据,避免反爬
    

    3,安装与配置

    安装:
    1,pip install selenium
    2,驱动程序:下载
    	2.1,查看浏览器的版本
    	2.2,选择相对应版本
    

    4,selenium的相关的API

    #编码流程
    from selenium import webdriver
    
    browser = webdriver.Chrome('./chromedriver.exe')
    browser.get('https://www.baidu.com/')
    
    
    #如何获取网页的元素
        browser.find_element_by_id('id值')      根据id值定位节点
        browser.find_element_by_name('name值')  根据name值定位节点
        browser.find_element_by_class_name()  根据节点class属性定位节点
        browser.find_element_by_xpath()        根据xpath定位节点
        browser.find_element_by_css_selector()  css选择器
        browser.find_element_by_link_text()    根据超文本定位
        browser.find_element_by_partial_link_text() 根据超链接文本的一部分定位
    
    #节点交互的操作
    	aa.send_keys("抖动")     #输入操作
    	aa.clear()               #清空
        bb.click()                #点击
        quit()					#退出浏览器
    #获取网页的源码
    	browser.page_source  -->字符串-->xpath解析
    #执行js的脚本
        js='window.scrollTo(0,document.body.scrollHeight)'  #滚动到一定的高度
        js="alert('啥也不是')"              #弹窗
        browser.execute_script(js)       #执行js
    #子页面的跳转:
    	注意: selenium 默认是父级页面
        switch_to_frame('frameid')
        switch_to_default_conent()
    #防检测
    	from seleniun.webdriver.chrome.options import Options
        options=Options()
        options.add_experimental_option('excludeSwitches',['enable-automation'])
    #无头浏览器
    
    

    5.八大定位小练习

    from selenium import webdriver
    import time
    # 创建一个驱动
    db=webdriver.Chrome()
    db.get("https://www.baidu.com")
    db.maximize_window()   # 最大化窗口
    # # 1.id
    # db.find_element_by_id("kw").send_keys("123")
    # time.sleep(2)
    
    # # 2.class
    # db.find_element_by_class_name("s_ipt").send_keys("123")
    # time.sleep(2)
    
    # # 3.xpath
    # db.find_element_by_xpath("//*[@id='kw']").send_keys("123")
    
    # # 4.css
    # db.find_element_by_xpath("//*[@id='kw']").send_keys("123")
    # time.sleep(2)
    # #5.link
    # db.find_element_by_link_text("新闻").click()
    # time.sleep(2)
    
    # # 6.partial_link
    # db.find_element_by_partial_link_text("新").click()
    # time.sleep(2)
    
    # # 7.tag标签唯一或者该标签在子元素的第一个   https://cn.bing.com
    # db.find_element_by_tag_name("input").send_keys("123")
    # time.sleep(2)
    
    # #8.name
    # db.find_element_by_name("wd").send_keys("qwe")
    
    # # 9.clear清除
    # kk=db.find_element_by_name("wd")
    # kk.send_keys("qwe")
    # kk.clear()
    
    # # 窗口自动化切换
    # print("------",db.window_handles)   #打印标识
    # print('kkkkkk',db.current_url)     #打印地址
    # db.find_element_by_link_text("hao123").click()
    # db.switch_to.window(db.window_handles[1])
    # print("------",db.window_handles)   #打印标识
    # print('kkkkkk2',db.current_url)     #打印地址
    # db.close()  #关闭第一个
    
    # # 弹框处理
    # db.find_element_by_id("s-usersetting-top").click()
    # time.sleep(2)
    # db.find_element_by_class_name("setpref").click()
    # time.sleep(1)
    # db.find_element_by_id("nr_3").click()
    # time.sleep(1)
    # db.find_element_by_link_text("保存设置").click()
    # time.sleep(1)
    
    

    下拉框

  • 相关阅读:
    HTML5和CSS3基础教程(第8版)-读书笔记(3)
    HTML5和CSS3基础教程(第8版)-读书笔记(2)
    HTML5和CSS3基础教程(第8版)-读书笔记
    JavaScript高级程序设计-读书笔记(7)
    HTTP状态码列表
    vue 监听对象里的特定数据
    vue 项目中命名方法
    一些常用文件夹和类的一些命名
    点将产品前端架构重构
    常用正则表达式总结
  • 原文地址:https://www.cnblogs.com/lxs1030/p/14170337.html
Copyright © 2011-2022 走看看