python3 --selenium常用方法总结

时间:2021-10-19 21:45:48

介绍

selenium是一个web层的自动测试框架,已经支持了许多语言,Java呀,Python呀。。这里我用的因为是Python3,所以总结记录一下常用到的api。

selenium的驱动方法

先说驱动,若没有驱动,则万事不能开始。看下面代码:
驱动下载及配置请看第一篇相关博客:
http://blog.csdn.net/s740556472/article/details/78150666

#导入selenium下的webdriver
from selenium import webdriver
#IE的驱动位置
iedriver = "D:\python3.6\Scripts\IEDriverServer.exe"
#加载ie驱动的方法
driver = webdriver.Ie(iedriver)
#加载Chrome驱动的位置
chromedriver = "D:\python3.6\Scripts\chromedriver.exe"
#将Chrome的驱动通过路径直接放入方法中
driver = webdriver.Chrome(chromedriver)

驱动成功后,通过下面的方法调用浏览器打开对应的网址:

#访问对应的地址,例如打开百度,此时一般
会弹出cmd黑框,那个是驱动的黑框,不要关闭
driver.get('www.baidu.com')

各种API

获取html源代码中的焦点

所有方法都是通过driver作为对象而进行驱动的,所以要是模块化方法,必须将driver传入其中,例如下面:

#登录方法
def login(driver):
#通过节点名称获取焦点
driver.find_element_by_name('userName')
#通过节点id获取焦点
driver.find_element_by_id('userName')
#通过xpath获取焦点
driver.find_element_by_xpath('/html/frameset/frameset/frame[1]')

这里要说的是xpath,我们可以通过F12调用浏览器自带的工具取查看,右键节点->copy->copy xpath 即可。

捕获焦点点击按钮

#点击添加按钮
driver.find_element_by_name('buttonInsert').click()
#各种组合都可以
driver.find_element_by_id('buttonInsert').click()
driver.find_element_by_xpath('/xxx/xxx/xx').click()

捕获焦点填充值

结合上面的方法,获取焦点后填充值的api

#方法一:
a = driver.find_element_by_name('userName')
a.send_keys('root')
#方法二:
driver.find_element_by_name('userName').send_keys('root')

切换Iframe

    #通过xpath加载frame
frameset = driver.find_element_by_xpath('/html/frameset/frameset/frame[1]')
#跳入frame中
driver.switch_to.frame(frameset)

跳出iframe

#回到默认的frame
driver.switch_to.default_content()
#回到父级的frame
driver.switch_to.parent_frame()

触发双击事件

#鼠标事件,导入ActionChains
from selenium.webdriver.common.action_chains import ActionChains
#分组双击
jobGroup = driver.find_element_by_name('jobDetailDto.jobGroup')
ActionChains(driver).double_click(jobGroup).perform()

下拉框选项

#下拉框
from selenium.webdriver.support.select import Select
#定位到codeselect下
codeselect = driver.find_element_by_name('codeselect')
#获取焦点后,根据值点击对应的选项
Select(codeselect).select_by_value('xxx')

对浏览器新打开的窗口进行焦点获取

#新弹出来的框进行查询点击操作
#获取所有窗口的handle,若handle不是当前窗口则切换
handles = driver.window_handles
for handle in handles:
if handle != driver.current_window_handle:
driver.switch_to_window(handle)
break

若需要切回其实的窗口,执行下面语句即可:

driver.switch_to_window(handles[0])

Tips

若执行脚本的过程中,提示找不到元素对应的焦点,这种错误多数出在:

  • frame未进入正确,请检查当前想获取节点处于哪个frame下,先进行跳转frame,在进行获取元素焦点的操作
  • 检查是否是新弹出来的浏览器窗口,若是,则需要将handle切入到最新浏览器中获取元素焦点进行操作
  • 当通过名字获取不到对应元素焦点的时候,可以考虑换一种方式获取,我在写脚本的时候发现,xpath这种方式获取元素焦点是比较靠谱的,有的时候通过by_name获取不到对应元素的焦点。
  • 细心、耐心,一步一步来,最终将脚本的每一步执行想成人去操作浏览器即可。

至此完!~