• Selenium模块的使用(二)


    selenium处理iframe
    - 如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)
    - 动作链(拖动):from selenium.webdriver import ActionChains
    - 实例化一个动作链对象:action = ActionChains(bro)
    - click_and_hold(div):长按且点击操作
    - move_by_offset(x,y)
    - perform()让动作链立即执行
    - action.release()释放动作链对象

    from selenium import webdriver
    from selenium.webdriver import ActionChains
    import time
    bro = webdriver.Chrome(executable_path='./chromedriver.exe')
    bro.get('https://c.runoob.com/front-end/61')
    # iframe标签 可在当前页面下嵌套子页面
    # 获得当前页面的子页面的标签
    bro.switch_to.frame('iframeResult')  # 改变浏览器标签定位的作用域
    div = bro.find_element_by_id('ha')
    action = ActionChains(bro) # 实例化动作链
    action.click_and_hold(div) # 点击长按指定的标签
    for i in range(5):
        # move_by_offse(x,y) x水平方向 y竖直方向 移动
        # perform() 执行动作链操作
        action.move_by_offset(16,0).perform()
        time.sleep(0.3)
    
    # 释放动作链
    action.release()
    bro.quit()

    Selenium实现模拟登录

    示例:QQ空间模拟登录

    from selenium import webdriver
    import time
    bro = webdriver.Chrome(executable_path='./chromedriver')
    # 发送请求
    bro.get('https://qzone.qq.com/')
    
    # # 改变浏览器标签定位的作用域
    bro.switch_to.frame('login_frame')
    
    # 点击账号密码登陆
    btn = bro.find_element_by_id('switcher_plogin')
    
    # 点击按钮
    btn.click()
    time.sleep(1)
    
    # 找到用户名 密码输入框
    user = bro.find_element_by_id('u')
    pwd = bro.find_element_by_id('p')
    
    # 输入用户名 密码
    user.send_keys('1121434897')
    time.sleep(1)
    pwd.send_keys('123456')
    time.sleep(1)
    
    # 找到登录按钮
    submit = bro.find_element_by_id('login_button')
    
    # 点击按钮
    submit.click()
    time.sleep(2)
    bro.quit()

    检测规避

    现在不少大网站有对selenium采取了监测机制。比如正常情况下我们用浏览器访问淘宝等网站的 window.navigator.webdriver的值为

    undefined。而使用selenium访问则该值为true。那么如何解决这个问题呢?

    只需要设置Chromedriver的启动参数即可解决问题。在启动Chromedriver之前,

    为Chrome开启实验性功能参数excludeSwitches,它的值为[‘enable-automation’],完整代码如下:

    from selenium.webdriver import Chrome
    from selenium.webdriver import ChromeOptions
    option = ChromeOptions()
    option.add_experimental_option('excludeSwitches', ['enable-automation'])
    driver = Chrome(options=option)
  • 相关阅读:
    实体类中的date类型问题
    java.sql.SQLException: validateConnection false
    本地计算机的mysql服务启动后停止
    VUE遇到Windows 64-bit with Unsupported runtime (64) For more information on which environments are supported please see
    有关详细信息, 请使用 -Xlint:unchecked 重新编译。
    mysql出错ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
    WIN7系统如何在文件列表中显示文件夹后缀
    shell 两类执行方法
    Git 报错 error setting certificate verify locations
    maven打包不同jdk版本的包
  • 原文地址:https://www.cnblogs.com/sxy-blog/p/13215544.html
Copyright © 2020-2023  润新知