IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> selenium模拟淘宝登陆 -> 正文阅读

[开发测试]selenium模拟淘宝登陆

? ? ? ? 使用selenium打开浏览器,模拟人工进行淘宝的登陆活动可以在网上找到两种解决方案。

? ? ? ? 第一种方案是打开网站后,通过find_element_by_xpath 依次寻找用户名录入框,密码录入框,登陆按钮点击框。如果有滑块的话,还需要找到滑块,模拟操作滑块移动到右方。

? ? ? ? 第二种方案是使用pyautogui中的图像匹配功能,需要提前将用户名登陆框,登陆按钮截图作为匹配模板,找到每一部分在屏幕上的位置,使用pyautogui.leftClick 模拟点击屏幕,pyautogui.typewrite(username) 模拟键盘输入,即可。由于pyautogui是屏幕操作,所以必须保证selenium打开的浏览器窗口当前处于活跃状态。

? ? ? ? 笔者在尝试的时候,使用的是firefox浏览器,在这两种方法里输入密码的时候均出现滑块,而滑块操作代码无效,或许firefox也需要有一些额外的设置,最终还是在Chrome下成功。

        # 初始化浏览器
        if tag == 'Firefox':
            binary = FirefoxBinary("D:\\Program Files\\firefox\\firefox.exe")
            self.browser = webdriver.Firefox(firefox_binary=binary)
        else:
            options = webdriver.ChromeOptions()
            options.add_experimental_option('excludeSwitches', ['enable-automation'])  
            self.browser = webdriver.Chrome(options=options)

?此处初始化Chrome浏览器时,重要的一点是必须开启开发者模式, 也就是这块options.add_experimental_option('excludeSwitches',?['enable-automation'])??,如果不开启,那么滑块必然会出现,开启后,还没有发现有滑块出现。

? ? ? ? 第一种方案

self.browser.find_element_by_xpath('//input[@name="fm-login-id"]').send_keys(username)
self.browser.find_element_by_xpath('//input[@name="fm-login-password"]').send_keys(password)
self.browser.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()  # 第一次点击登录按钮

? ? 查找用户名录入框,录入用户名,查找密码录入框,录入密码,尝试点击登陆按钮。

? ? ?第二种方案

        # 进入登陆窗口
        self.browser.get('https://login.taobao.com/member/login.jhtml')

        # 匹配用户名录入框
        coords = pyautogui.locateOnScreen('D:\\input.png')
        if coords is not None:
            x, y = pyautogui.center(coords)
            # 点击用户名录入框
            pyautogui.leftClick(x, y)
            pyautogui.typewrite(username)

            pyautogui.press('tab')
            pyautogui.typewrite(password)

        # 匹配登陆按钮
        coords = pyautogui.locateOnScreen('D:\\login.png')
        if coords is not None:
            x, y = pyautogui.center(coords)
            # 点击登陆按钮
            pyautogui.leftClick(x, y)

? ? 先匹配用户名录入框,找到之后模拟点击,输入用户名,随后模拟Tab按钮,切换焦点到密码录入框,再录入密码。随后匹配登陆按钮,模拟点击登陆按钮,即可。

? ? 此处需要注意的是pyautogui打开图片时,路径应该采用绝对路径名,且不支持中文。我的python文件是在中文目录下,一开始使用 pyautogui.locateOnScreen('input.png') 提示有错误,应该是无法找到文件。随后换到一个英文路径下,也不行。只有采用一个绝对路径名才不报错。

? ? ? ? ?滑块功能现在还没有尝试成功,留待下次再试。

2021年10月07日

参考以下文章

selenium淘宝登录和滑块破解最新可用

通过selenium+pyautogui模拟登陆淘宝(完美实现)

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:34:29  更:2021-10-09 16:35:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:31:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码