Python+Selenium实现web自动化跳过登录

您所在的位置:网站首页 怎么跳过网页登录微信账号 Python+Selenium实现web自动化跳过登录

Python+Selenium实现web自动化跳过登录

2024-06-20 08:58| 来源: 网络整理| 查看: 265

Web自动化跳过登录 背景思路方法代码总结

背景

自动化模拟登录,遇到图形验证码或者动态验证码时,代码操作复杂。该怎么跳过登录?

思路

研究文档发现,selenium有add_cookie()方法

方法 driver.add_cookie({'name': k, 'value': v})

其中k,v对应一条cookie的键值

代码 from selenium import webdriver from selenium.webdriver.common.keys import Keys import time, sys, io driver = webdriver.Chrome(executable_path="C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe") driver.get("http://example.com/index?argv=1") assert "页面标题" in driver.title driver.maximize_window() # __IDENTIFY__=1951aca300a50f64a26a8ed5e970f4c3 # ttdd_session_id=040f57dbd50492b70c0a5322f82ff9f9f8212cc969367b366f9ecffc3fe5999b cookies = dict(__IDENTIFY__='1951aca300a50f64a26a8ed5e970f4c3', ttdd_session_id='040f57dbd50492b70c0a5322f82ff9f9f8212cc969367b366f9ecffc3fe5999b') for k, v in cookies.items(): driver.add_cookie({'name': k, 'value': v}) time.sleep(1) driver.refresh() # driver.get("http://example.com/index?argv=1") # why not work? time.sleep(5) # 点击 元素 e = driver.find_element_by_xpath('/html[1]/body[1]/div[1]/div[3]/div[1]/div[1]/ul[1]/li[9]/a[1]/span[1]') # use ChroPath to locate element e.click() time.sleep(2) # 点击 元素 e = driver.find_element_by_xpath('/html[1]/body[1]/div[1]/div[3]/div[1]/div[1]/ul[1]/li[9]/ul[1]/li[7]/a[1]/span[1]') # use ChroPath to locate element e.click() time.sleep(2) # 输入文本 # e= driver.find_element_by_xpath('/html[1]/body[1]/div[1]/div[3]/div[2]/div[1]/div[2]/form[1]/div[1]/input[1]') e = driver.find_element_by_xpath("//input[contains(@placeholder,'只支持item_id搜索')]") e.click() e.send_keys(538) time.sleep(2) # 点击 元素 e = driver.find_element_by_xpath("//button[contains(@class,'btn btn-sm green table-group-action-submit')]") e.click() time.sleep(2) # 查找是否有 元素 try: e = driver.find_element_by_xpath("//tr[1]//td[14]//a[2]") print('找到元素') except: print('无此元素') # 遍历表格 cells = [] trlist = driver.find_elements_by_tag_name('tr') for row in trlist: tdlist = row.find_elements_by_tag_name('td') print('列表行数', tdlist) row_list = [] for col in tdlist: row_list.append(col.text) print(col.text + '\t', end= '') print('\n') cells.append(row_list) print('*' * 200) print(cells) time.sleep(10) driver.close() # 关闭当前tab time.sleep(5) driver.quit() # 关闭浏览器所有tab 总结

1、添加多条cookie,可用for循环 2、使用by_tag_name方法对表格内容进行遍历 3、cookie抓包可用fiddler,或者浏览器F12功能 4、元素定位可用Chrome插件ChroPath 5、WebDriver下载地址: https://selenium.dev/documentation/en/webdriver/driver_requirements/#quick-reference 6、WebDriver路径添加到系统Path



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3