一、安装
selenium+Python环境配置
Python环境安装
安装selenium:pip install selenium
安装webdriver:https://docs.seleniumhq.org/download/
Firefox:https://github.com/mozilla/geckodriver/releases/
Chrome:http://chromedriver.storage.googleapis.com/index.html
IE:http://selenium-release.storage.googleapis.com/index.html
注:webdriver需要和对应的浏览器版本以及selenium版本对应
二、常用功能
将浏览器最大化显示:
browser.maximize_window()
将浏览器最小化显示
browser.minimize_window()
浏览器后退
browser.back()
浏览器前进
browser.forward()
5. 模拟浏览器刷新
browser.refresh()
1.定位
webdriver 提供了常用八种的对象定位方法
id定位:find_element_by_id()
name定位:find_element_by_name()
class定位:find_element_by_class_name()
link定位:find_element_by_link_text()
partial link定位:find_element_by_partial_link_text()
tag定位:find_element_by_tag_name()
xpath定位:find_element_by_xpath()
css定位:find_element_by_css_selector()
2.iframe
页面存在iframe或内嵌窗口
driver.switch_to_frame('iframeid')#切换到对应ID的iframe框架里
driver.switch_to.default_content() #切换回默认页面
driver.switch_to.parent_frame()#切换到上一级iframe框架里
driver.switch_to.window(windows[-1])#切换到最新窗口
3.截图
窗口截图能更自观的对界面进行人工校验
driver.get_screenshot_as_file(保存路径)
4.获取验证码
1 | pip install ddddocr |
如果安装速度慢,可以连接国内镜像进行安装,命令如下:
1 | pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple/ |
import ddddocr
# 查找验证码元素
png=browser.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div/div/span/span/span[2]/img')
# 对验证码进行截图并保存
png.screenshot('getCode.jpg')
# 分析验证码
ocr = ddddocr.DdddOcr()
with open('getCode.jpg', 'rb') as f:
img_bytes = f.read()
res = ocr.classification(img_bytes)
# time.sleep(3)
print(res)
#输入登录信息
browser.find_element_by_id('szxc_account').send_keys('siheshequ')
browser.find_element_by_id('szxc_password').send_keys('p&zLM5#d')
browser.find_element_by_id('code').send_keys(res)
browser.find_element_by_id('agree').click()
5.跳过登陆页
# 跳过验证码验证直接登录首页
driver.get('https://dv.lonsun.cn/#/user/login?redirect=%2F')
time.sleep(3)
driver.add_cookie({'name':'Sa-Token','value':'token:2899d8df441f4f9c8d07a4fa9dda4cad'})
time.sleep(3)
driver.get('https://dv.lonsun.cn/#/home/index')
# #获取到登录成功的cookie然后打印
# cks = driver.get_cookies()
# for ck in cks:
# print(ck)
# time.sleep(30)
# print("------")
# cks = driver.get_cookies()
# for ck in cks:
# print(ck)
6.Div滚动条
from selenium.webdriver.common.action_chains import ActionChains
#(可用)
GD = driver.find_elements(By.CLASS_NAME,'ant-btn-primary')[2]
GD.location_once_scrolled_into_view
其他类型
# document.getElementsByClassNAME('grid-area-edit page-edit-form h-full overflow-y-auto')[1]
# js='document.getElementsByClassName("grid-area-edit page-edit-form h-full overflow-y-auto")[1].scrollTop=10000'
# dr.execute_script(js)
先获取classname(暂时测试无法使用)
document.getElementsByClassName('ant-modal-body')[0].scrollTop = 10000
js = "document.getElementsByClassName('tui-d0 webkit-scrollbar')[0].scrollTop = 10000"
driver.execute_script(js)
#***:滚动浏览器界面至指定元素(可用)
el = driver.find_element(By.XPATH,'//*[@id="form_in_modal_handleSituation"]')
js = f"arguments[0].scrollIntoView()"
driver.execute_script(js, el)
time.sleep(1)
7.Div上传图片
# #上传图片
# # 上传图片不需要点击
# upload_element = driver.find_element(By.XPATH,'//*[@id="user_managemen_form_imgUrl"]/span/div[2]/span/input')
# upload_element.send_keys(r'D:\龙讯项目\工具\上传附件\图片\QQ截图20220712113748.png')
8.安全证书
options=webdriver.ChromeOptions()
options.add_argument('-ignore-certificate-errors')#忽略安全证书
options.add_argument('-ignore -ssl-errors')#忽略安全证书
driver = webdriver.Chrome(chrome_options=options)
9.上传附件
import os #上传附件autolt
# #文件上传
# # 调用exe上传文件
# driver.find_element(By.XPATH,'//*[@id="form_in_modal_villageHouseholdAttachmentEOS"]/span/div[1]/span/div').click()
# time.sleep(3)
# command = r'C:\Users\Admin\Desktop\upload5.exe'
# os.system(command)
# time.sleep(3)
10.页面元素无法定位
#下拉框自动消失时,控制台输入setTimeout(function(){debugger},3000)
11.清除输入框内容
#导入键盘包
from selenium.webdriver.common.keys import Keys
driver.find_element(By.XPATH,'//*[@id="form_in_modal_mobile"]').send_keys(Keys.CONTROL, 'a')
12.定位变动元素
/div[last()]/
13.svg元素
chong_btn = (By.XPATH, '//div[@class="file-title"]/*/*[2]/*')