python+selenium实现web自动化脚本总结

一、元素定位方法
网页元素(web element),页面显示的对象,包括按钮、文字、输入框等都称为HTML页面元素,要操作网页元素首先要找到这个元素,selenium有八大元素定位方法:
find_element_by_id 通过id定位元素,id唯一
find_element_by_xpath 通过xpath定位,相对/绝对路径
find_element_by_name 元素本身属性的名称,可能会定位到多个值,默认返回第一个值
find_element_by_class_name 元素的css 类
find_element_by_tag_name 标签,不推荐,重复率太高
find_element_by_link_text 通过文本链接定位
find_element_by_partial_link_text 通过部分文本链接定位
find_element_by_css_selector css选择器

1、find_element_by_xpath
比较常用,用法如下,以登录我们路由器的密码输入框为例,F12或者右键-检查,定位到当前元素,右键copy-copy xpath,将拷贝的路径添加到脚本:

在这里插入图片描述

driver.find_element_by_xpath(’//*[@id=“kw”]’) # 相对路径

2、find_element_by_name/id
HTML页面:

在这里插入图片描述
Selenium脚本:
driver.find_element_by_id(‘psd’).send_keys(‘admin’) # 输入登录密码admin
driver.find_element_by_name(‘psd’).send_keys(‘admin’)

3、contains的用法

关于xpath 查找元素还可以通过contains(一个字符串查找函数)来实现,语法是

//input[contains(@id,vakue) and contains(@id,value)],此中的id和value就是定位input元素的键值对

例如:

//input[contains(@class,'textfild') and contains(@name,'pass')]

driver.findElement(By.xpath("//input[contains(@class,'textfild') and contains(@name,'pass')]")).clear();

driver.findElement(By.xpath("//input[@id='passwords' and @class='textfild required' and @type='password']")).sendKeys("123456");

二、等待处理方法
1、固定等待
time.sleep(2)
固定等待2秒,脚本调试中使用,不建议用到项目中,会影响代码执行效率;

2、隐式等待
implicitly_wait(8)
最多等待8s直到页面刷新出来,一次设置,全局生效,缺点:元素已找到,但未渲染出页面,导致找不到相应元素而出错;
3、显式等待
from selenium.webdriver.support.wait import WebDriverWait # 显示等待包
from selenium.webdriver.support import expected_conditions as EC # 期望事件包

wait = WebDriverWait(driver, 3)
wait.until(EC.alert_is_present())
设置显示等待时间,最长等待3s,默认0.5s轮询一次,直到出现alert弹框
注意:若显式等待和隐式等待时间均有设置,按最长的时间算;

三、鼠标键盘操作
from selenium.webdriver import ActionChains # 导入鼠标键盘事件
from selenium.webdriver.common.keys import Keys # 键盘鼠标事件辅助类

actionChains = ActionChains(driver) # 实例化
actionChains.send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform()
鼠标向下移动一行,点击确定,perform()方法表示执行前面一系列动作,不可少
element.send_keys(Keys.CONTROL + ‘a’) # 全选密码
time.sleep(2)
element.send_keys(Keys.BACKSPACE) # 删除密码
time.sleep(2)
element.send_keys(‘12345678’) # 修改密码
将原密码删除,并修改为新密码
其他的方法用到的时候再百度;

四、弹框处理
常见弹框:alert(提示框)、confirm(用来确认)、prompt(输入内容)
弹框的操作 :accept() 接受、dismiss() 取消、text() 显示弹框文本、send_keys() 弹框中输入内容
例如路由器本地升级页面的弹框为confirm类型:

#点击升级按钮
driver.find_element_by_class_name(‘pcsmallbutton’).click()
sleep(2)
#接受confirm套框,切换到当前alert
driver.switch_to.alert.accept()

五、PyCharm常用快捷键介绍
转换到前/后一次打开的脚本:Ctrl+Alt+左/右
注释多行:选中要注释的行,ctrl+/
段落缩进:选中要缩进的行,Tab
取消缩进:选中要缩进的行,shift+Tab

原文链接:https://blog.csdn.net/weixin_37582559/article/details/112726813

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值