python3 --selenium常用方法总结

来源:互联网 发布:linux mmap使用 编辑:程序博客网 时间:2024/06/03 15:53

介绍

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

selenium的驱动方法

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

#导入selenium下的webdriverfrom 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

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

触发双击事件

#鼠标事件,导入ActionChainsfrom 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获取不到对应元素的焦点。
  • 细心、耐心,一步一步来,最终将脚本的每一步执行想成人去操作浏览器即可。

至此完!~


原创粉丝点击