• 登录滑块处理


    一些登录页面会有滑块验证,如下图:

    首先尝试用selenium按住滑块,脚本如下:

    el1 = driver.find_element_by_xpath('//*[@id="nc_1_n1z"]')  # 按住滑块
    ActionChains(driver).click_and_hold(on_element=el1).perform()
    ActionChains(driver).move_to_element_with_offset(to_element=el1, xoffset=400, yoffset=0).perform()  # 滑动滑块

    xoffset表示向右移动,向左则为负,yoffset表示向下移动

    但是发现还不行,滑块对自动化程序作了限制,那么只有使用js改window.navigator.webdriver为false了

    script = 'Object.defineProperty(navigator,"webdriver",{get:() => false,});'
    driver.execute_script(script)  # 运行Javascript

    完整代码如下:

    def onwork_login(**param_dict):
        driver = webdriver.Chrome()
        driver.get("要导航到的网址")  # 导航到onwork页面
        driver.find_element_by_xpath('//*[@id="details-button"]').click()  # 点击高级按钮
        driver.find_element_by_xpath('//*[@id="proceed-link"]').click()  # 点击继续前往
        driver.find_element_by_xpath('//*[@id="app"]/div/div[1]/div/div/a[1]').click()  # 点击右上方登录
        driver.find_element_by_xpath('//*[@id="pane-first"]/div/form/div[1]/div/div/input').send_keys(
            param_dict['username'])  # 输入用户名
        driver.find_element_by_xpath('//*[@id="pane-first"]/div/form/div[2]/div/div[1]/input').send_keys(
            param_dict['password'])  # 输入密码
        ''' js改window.navigator.webdriver属性为false'''
        script = 'Object.defineProperty(navigator,"webdriver",{get:() => false,});'
        driver.execute_script(script)  # 运行Javascript
        el1 = driver.find_element_by_xpath('//*[@id="nc_1_n1z"]')  # 按住滑块
        ActionChains(driver).click_and_hold(on_element=el1).perform()
        ActionChains(driver).move_to_element_with_offset(to_element=el1, xoffset=400, yoffset=0).perform()  # 滑动滑块
        time.sleep(1)
        driver.find_element_by_xpath('//*[@id="pane-first"]/div/button/span').click()  # 点击登录

    参考:

    https://blog.csdn.net/qq_41338249/article/details/107622186

    https://blog.csdn.net/weixin_39861627/article/details/111018765?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-4.control&spm=1001.2101.3001.4242





  • 相关阅读:
    springtools插件的安装
    Spring--Bean的配置
    BS模式与CS模式的区别
    AMD 和 CMD 的区别有哪些?
    js中import和require的区别
    6个最优秀的微信小程序UI组件库
    微信小程序获取formid
    NodeJs 实现简单WebSocket 即时通讯
    NodeJS怎么实现WebSocket功能
    NodeJs实现WebSocket——express-ws
  • 原文地址:https://www.cnblogs.com/carlvine/p/15134307.html
Copyright © 2020-2023  润新知