1、破解验证码
OCR识别: tesseract-ocr
AI机器学习:
2、绕过
1、让开发人员临时关闭验证码 安全性需要保密,一般在开发测试环境使用)
2、提供一个万能的验证码(安全性需要保密,一般在开发测试环境使用)
3、使用cookie(登录主要是为了拿cookie,获取登录凭证)
from selenium import webdriver
import time
# 引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
#拿到一辆小汽车driver
driver = webdriver.Firefox()
#跳转网页
driver.get("https://xdclass.net")
print(driver.title)
time.sleep(3)
#打印句柄
print("所有句柄为:",driver.window_handles)
print("当前句柄为:",driver.current_window_handle)
#获取token
driver.add_cookie({"name":"name","value":"jack"})
driver.add_cookie({"name":"token","value":"xdclasseyJhbGciOiJxxx"})
#点击一个课程页面
video_ele = driver.find_element_by_css_selector(".recommendcourse > div:nth-child(1) > div:nth-child(2) > a:nth-child(6) > div:nth-child(1) > img:nth-child(2)")
video_ele.click()
#一定要查看当前句柄,因为页面已经跳转到第二个页面,这里是坑
#这里把控不好,会导致定位失败,无法进行后续操作。
driver.switch_to.window(driver.window_handles[1])
print("所有句柄为:",driver.window_handles)
print("当前句柄为:",driver.current_window_handle)
time.sleep(5)
buy_btn_ele = driver.find_element_by_css_selector(".buy_tolearn > a:nth-child(1)")
#ul.details > li:nth-child(2)
buy_btn_ele.click()
print("进入下单页面")
#结果
小滴(D)课堂-首页
所有句柄为: ['19']
当前句柄为: 19
所有句柄为: ['19', '6442450947']
当前句柄为: 6442450947
进入下单页面
总结:
这里会有一个忽略点,就是当前句柄,因为不注意此问题,导致元素定位错误。报错为如下
C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\python.exe D:/nd/自动化selenium/cookie操作.py
小滴(D)课堂-首页
所有句柄为: ['19']
当前句柄为: 19
Traceback (most recent call last):
File "D:/nd/自动化selenium/cookie操作.py", line 29, in <module>
buy_btn_ele = driver.find_element_by_css_selector(".buy_tolearn > a:nth-child(1)")
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 598, in find_element_by_css_selector
return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
'value': value})['value']
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: .buy_tolearn > a:nth-child(1)
Process finished with exit code 1