1.python 3.6以及IDE
2.安装selenium package
3.将对应对应浏览器版本的driver文件放置在python安装目录下(如chromedriver.exe,MicrosoftWebDriver.exe)
微软的驱动文件需要改名如上
成功配置,运行以下代码会直接在浏览器中打开百度:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
测试步骤 预期结果
shift+crtl+C选取页面元素
使用js判断组件个数
document.getElementsByClassName("s_ipt")
from selenium.webdriver.support import expected_conditions as ec
import time
driver.get("http://www.5itest.cn/register")
time.sleep(5)
print(ec.title_contains("注册"))
driver.find_element_by_id("register_email").send_keys("[email protected]")
driver.find_element_by_class_name("controls").find_elements_by_class_name("form-control")[1].send_keys("richard2333")
# 查找多个元素的时候使用find_elements_by_class_name,多个find方法查找出现多个对象时默认选择第一个,选择其他需要使用下标
driver.find_element_by_name("password").send_keys("111111")
driver.find_element_by_xpath("//*[@id='captcha_code']").send_keys("11111111111111")
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
locator = (By.CLASS_NAME, "controls") # 按照classname查找controls
WebDriverWait(driver, 10).until(ec.visibility_of_element_located(locator)) # 10代表在10s中内查找指定元素
driver.close() # 一定要关闭driver,否则会不断启动进程导致电脑变卡
使用get_attribute() 对于文本框中信息可以用"value"
email_element=driver.find_element_by_id("register_email")
print(email_element.get_attribute("placeholder"))
email_element.send_keys("[email protected]")
print(email_element.get_attribute("value"))
import random
for i in range(5):
user_email = ''.join(random.sample('1234567890abcdefg', 5)) + "@163.com" # 123456的字符串表示随机选取的字符,5表示生成的长度
print(user_email)
①截取图片
注意:根据电脑显示的缩放比例,调整页面大小,否则会导致截取不正确
from PIL import Image
driver.execute_script('document.body.style.zoom="0.8"') # 根据电脑缩放比例缩小窗口比例
driver.save_screenshot("D:/imooc.png")
code_element = driver.find_element_by_id("getcode_num")
left = code_element.location['x'] # 获取左上角点x值
top = code_element.location['y'] # 获取左上角点y值
right = code_element.size['width'] + left # 获取元素宽度
height = code_element.size['height'] + top # 获取元素高度
im = Image.open("D:/Users/Richard Young/Desktop/imooc.png")
print(left, top, right, height)
img = im.crop((left, top, right, height)) # 截取图片
img.save("D:/imooc1.png")
②识别验证码信息
1.使用pytesseract package
只能识别工整规范的验证码图片
import pytesseract
from PIL import Image
image = Image.open("D:/imooc1.png")
text = pytesseract.image_to_string(image)
print(text)
2.调用外部API
可以识别不规整的验证码 但识别率取决于API
import json
import requests
def imgcode_local(imgpath):
"""
本地图片识别
:param imgpath: 本地图片路径
:return: 识别结果
"""
data = {
'token': TOKEN,
'type': 'local'
}
# binary上传文件
files = {'file': open(imgpath, 'rb')}
response = requests.post(URL, files=files, data=data)
print(response.text)
result = json.loads(response.text)
if result['code'] == 200:
return result['data']
else:
return 'error'
text = imgcode_local('D:/imooc1.png')
time.sleep(2)
driver.find_element_by_id('captcha_code').send_keys(text)
下一篇:Python3+Selenium3自动化测试框架——②流程梳理及代码封装_u011282197的博客-CSDN博客Python3+Selenium3自动化测试框架——①基本步骤对之前的步骤进行一、流程梳理以及功能封装# coding=utf-8import jsonimport randomimport timeimport requestsfrom PIL import Imagefrom selenium import webdriverdriver = webdriver.Chrome()# 浏览器初始化def driver_init(): driver.get(.https://blog.csdn.net/u011282197/article/details/122808679