统计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()
相关推荐
老秦包你会几秒前
Qt第三课 ----------容器类控件
开发语言·qt
aPurpleBerry1 分钟前
JS常用数组方法 reduce filter find forEach
javascript
凤枭香3 分钟前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
ULTRA??7 分钟前
C加加中的结构化绑定(解包,折叠展开)
开发语言·c++
远望清一色24 分钟前
基于MATLAB的实现垃圾分类Matlab源码
开发语言·matlab
GIS程序媛—椰子30 分钟前
【Vue 全家桶】7、Vue UI组件库(更新中)
前端·vue.js
confiself33 分钟前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言
DogEgg_00136 分钟前
前端八股文(一)HTML 持续更新中。。。
前端·html
ZL不懂前端39 分钟前
Content Security Policy (CSP)
前端·javascript·面试
乐闻x42 分钟前
ESLint 使用教程(一):从零配置 ESLint
javascript·eslint