嗨喽~大家好呀,这里是小曼呐 ❤ ~!
导入模块
# from selenium import webdriver
# from selenium.webdriver import ActionChains
# from password import account_train, password_train
# # 导入时间模块
# import time
1.打开浏览器
# driver = webdriver.Chrome()
# # 绕过检测
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
# {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
2.访问网站
# driver.get('https://kyfw.12306.cn/otn/resources/login.html')
3.登陆账号密码, 点击登陆
先定位输入框<元素定位>, 然后再输入内容
I. css选择器
II. xpath节点提取
网站检测到了, 你在使用selenium --> 绕过检测
# # 通过 CSS 选择器查找元素
# driver.find_element_by_css_selector('#J-userName').send_keys('账号')
# driver.find_element_by_css_selector('#J-password').send_keys('密码')
# driver.find_element_by_css_selector('#J-login').click()
4.<出现验证码> --> 滑动操作就可以了
I. 按住滑块 --> 鼠标动作链
II. 滑动滑块 --> 滑到哪里呢?
网页元素还没加载出来, 你就去定位元素, 找不到…
延时
# time.sleep(1)
定位滑块元素
# h = driver.find_element_by_css_selector('#nc_1_n1z')
# action = ActionChains(driver)
# # perform() 执行操作
# action.click_and_hold(h).perform()
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# # 释放
# action.release().perform()
ddddocr 缺点: 识别准确率不是很高
导入识别模块
import ddddocr
实例化对象
ocr = ddddocr.DdddOcr()
读取图片内容
f = open('img\\img_1.png', mode='rb')
img = f.read()
result = ocr.classification(img)
print(result)
12306网站滑动验证码
selenium 模块自动化测试模块
selenium --> 浏览器驱动 --> 浏览器 <模拟人的行为去操作流程>
selenium 默认安装是4.0版本 语法和3.0不同 pip install selenium==3.141.0
谷歌浏览器
谷歌驱动 --> 版本选择 和你浏览器版本最相近就可以了
下载好了之后解压就可以了, 不需要双击安装
3.打开浏览器
驱动路径:
I. 驱动文件在python安装目录下 <不需要添加路径>
II. 驱动文件和代码放在一起 <不需要添加路径>
III. 写驱动路径 绝对路径
4.访问网站
5.登陆账号密码, 点击登陆
6.<出现验证码> --> 滑动操作就可以了
模拟登陆
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from password import VideoAccount, VideoPassword, account, password
from chaojiying import Chaojiying_Client
driver = webdriver.Chrome()
driver.get('https://*****/')
driver.find_element_by_css_selector('.header-login-entry').click()
time.sleep(1)
driver.find_element_by_css_selector('.tab__form div:nth-child(1) input').send_keys(VideoAccount)
driver.find_element_by_css_selector('.tab__form div:nth-child(3) input').send_keys(VideoPassword)
driver.find_element_by_css_selector('div.btn_primary').click()
"""
对接打码平台 --> 超级鹰
"""
time.sleep(2)
img = driver.find_element_by_css_selector('.geetest_item.geetest_big_item')
img.screenshot('yzm.png')
im = open('yzm.png', 'rb').read()
chaojiying = Chaojiying_Client(account, password, '96001')
pic_str = chaojiying.PostPic(im, 9004)['pic_str']
for index in pic_str.split('|'):
x = index.split(',')[0]
y = index.split(',')[1]
action = ActionChains(driver)
action.move_to_element_with_offset(img, int(x), int(y)).click().perform()
driver.find_element_by_css_selector('.geetest_commit_tip').click()
感谢你观看我的文章呐~
希望本篇文章有对你带来帮助 ,有学习到一点知识~
学无止境,期待你变成更好的自己。(让我们一起努力叭)。