统计selenium模拟登录的一些方法

驱动安装

之前常常是先根据浏览器版本下载对应版本的驱动,但其实有一个办法是可以自动获取当前浏览器的版本,自动下载对应的驱动到本地的。

复制代码
    from webdriver_manager.chrome import ChromeDriverManager
    browser = webdriver.Chrome(ChromeDriverManager().install())

去掉webdriver痕迹

有一些网站,当用webdriver访问时,会提示请求失败。这时,就需要去掉webdriver痕迹,模拟正常登录。

复制代码
    from selenium.webdriver import ChromeOptions
    options = ChromeOptions() # 启动配置参数
    options.add_argument("--disable-blink-features=AutomationControlled") # 增加参数
    browser = webdriver.Chrome(ChromeDriverManager().install(), options=options)

如果还需去掉受自动测试软件控制的提示,则需要添加如下参数

复制代码
    options.add_experimental_option('useAutomationExtension', False)

xpath定位元素的tips

//* 代表选取文档中的所有元素
复制代码
    # 查找所有元素,找到文案包含"登录"的元素,点击
    browser.find_elements(By.XPATH, "//*[contains(text(), '登录')]")[0].click()
查找特定元素
复制代码
    placeholder = '用户名'
    account='username'
    # 选取所有input元素(不管位置),拥有值为{placeholder}的placeholder属性
    browser.find_elements(By.XPATH, f"//input[@placeholder='{placeholder}']")[0].send_keys(account)

上方代码以f开头,表示在字符串内支持大括号内的python表达式

拖拽元素
复制代码
    from selenium.webdriver import ActionChains
    # 找到drag元素
    drag = browser.find_elements(By.XPATH, "//span[@class='btn_slide']")[0]
    # 调用ActionChains()类,并将浏览器驱动browser作为参数传入
    action_chains = ActionChains(browser)
    # 模拟拖拽,拖拽到某个坐标然后松开
    action_chains.drag_and_drop_by_offset(drag, 320, 0)
    # 执行ActionChains()中储存的所有操作,可以看做是执行之前一系列的操作
    action_chains.perform()
相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
C语言小火车4 天前
C/C++ 为什么需要编译器?
开发语言·c++
李少兄4 天前
JavaScript 隐式全局变量解析
javascript