zoukankan      html  css  js  c++  java
  • selenium的基本使用

    selenium

    • 概念: 基于浏览器自动化的一个模块,

      • Appnium是基于手机的自动化模块

    • 作用

      • 便捷的爬取到动态加载的数据,可见即可得

      • 便捷的实现模拟登陆,

    • 动作链

      •  from selenium.webdriver import ActionChains #动作连的类
      •  #基于动作连实现滑动操作
         action = ActionChains(bro)
         #点击且长按
         action.click_and_hold(div_tag)
         
         for i in range(5):
            #perform()表示让动作连立即执行
            action.move_by_offset(20,20).perform()
            sleep(0.5)
      • 在使用find系列的函数进行标签定位的时候如果出现了NoSuchElementException如何处理?

        • 如果定位的标签是存在于iframe标签之下的,则在进行指定标签定位的时候 必须使用switch_to.frame()的操作才可。

        •  bro.switch_to.frame('iframeResult') #frame的参数为iframe标签的id属性值
    • 无头浏览器

      •  from selenium.webdriver.chrome.options import Options
         # 创建一个参数对象,用来控制chrome以无界面模式打开
         chrome_options = Options()
         chrome_options.add_argument('--headless')
         chrome_options.add_argument('--disable-gpu')
    • 如何规避selenium被监测到的风险

      • 网站可以根据:window.navigator.webdriver的返回值鉴定是否使用了selenium

      • undefind:正常

      • true:selenium

      •  #通过加参数让window。navigateor。webdriver返回值为undefined,规避监测
         rom selenium.webdriver import ChromeOptions
         
         option = ChromeOptions()
         option.add_experimental_option('excludeSwitches', ['enable-automation'])
         
         
         # 后面是你的浏览器驱动位置,记得前面加r'','r'是防止字符转义的
         bro = webdriver.Chrome(r'chromedriver.exe',options=option)
    • 示例

      •  from selenium import webdriver
         import time
         #实例化某一款浏览器对象
         bro = webdriver.Chrome(executable_path='chromedriver.exe')
         
         #基于浏览器发起请求
         bro.get('https://www.jd.com/')
         
         #商品搜索
         #标签定位
         search_input = bro.find_element_by_id('key')
         #往定位到的标签中录入数据
         search_input.send_keys('袜子')
         #点击搜索按钮
         btn = bro.find_element_by_xpath('//*[@id="search"]/div/div[2]/button')
         time.sleep(2)
         btn.click()
         time.sleep(2)
         #滚轮滑动(js注入)
         bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
  • 相关阅读:
    最搞笑的“求婚”誓言
    Flex Application 初始化顺序
    LRCParser组件
    C 游戏所要看的书
    Flex3 加载进度在IE没法显示,在FF中正常
    外企面试官们爱提的十个问题
    EBS R12.1安装中文补丁包BUG:FAILED: file XLIFFLoader.class on worker [X]
    Oracle ebs 就业市场
    Oracle EBS开发基础知识
    Oracle EBS R12 运行adadmin 安装中文语言包过程中意外中断后的处理
  • 原文地址:https://www.cnblogs.com/W-Y-C/p/12550328.html
Copyright © 2011-2022 走看看