自动化脚本问题总结

一、安装

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

#(可用)

driver.find_element(By.XPATH,'//*[@id="app"]/section/section/section/main/div[2]/div[2]/div/div/div/div/div/div/div[2]/div[2]/form/div[11]/div[2]/div/span/div/ul').location_once_scrolled_into_view

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]/*')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值