您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > Python+selenium
Python+selenium入门学习笔记2016-1-20工具简介选择基本使用方法定位目录Selenium是什么Seleniumisasuiteoftoolstoautomatewebbrowsersacrossmanyplatforms.这是selenium官网关于selenium的一段描述。Selenium是一个强大的开源的Web功能自动化测试工具系列。目前主要包括以下5部分:SeleniumCoreSeleniumIDESeleniumRC(remotecontrol)SeleniumGridSeleniumwebdriverSelenium2=Selenium1+WebDriver为什么用SeleniumSelenium使用灵活,简单,写出的测试用例非常简洁,优美,易于维护;支持多种语言编写用例最主要的还是它是开源的了,非常强大的Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。测试与浏览器的兼容性,测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能,创建衰退测试检验软件功能和用户需求。selenium+python自动化测试环境搭建Python版本:选择2.7.2,Why?目前大部分第三方库和工具对2.7都有简单的安装包,不需要自己做太多处理,比2.6内置了一些包,不需要再安装;Python3.x不支持Se2.0Selenium版本:选择2.0+,Why?因为从2.0开始,Se已经和WebDriver集成在一起了,WebDriver提供了非常多的API和自动化测试处理方法。具体安装方法参考:开始声明字符集#coding=utf-8导入需要用到的包importtime,unittest,re使用selenium在脚本开始要加上fromseleniumimportwebdriver#浏览器fromselenium.common.exceptionsimportNoSuchElementException#异常fromselenium.webdriver.common.keysimportKeys#键入浏览器基本操作driver=webdriver.Firefox()#打开浏览器driver.maximize_window()#将浏览器最大化显示driver.set_window_size(800,600)#调整浏览器大小#控制浏览器前进、后退driver.get(')#访问百度首页driver.get(')#访问百度新闻首页driver.back()#返回(后退)到百度首页driver.forward()#前进到新闻页driver.switch_to_window(driver.window_handles[-1])#定位到新窗口driver.close()#关闭浏览器常用元素定位方法webdriver提供了一系列的元素定位方法,常用的有以下几种:分别对应Pythonwebdriver中的方法为:webdriverpythonwebdriveridfind_element_by_id()namefind_element_by_name()classnamefind_element_by_class_name()tagnamefind_element_by_tag_name()linktextfind_element_by_link_text()partiallinktextfind_element_by_partial_link_text()xpathfind_element_by_xpath()cssselectorfind_element_by_css_selector()常用操作方法webdriver中比较常用的操作元素的方法有下面几个:clear清除元素内容,如果可以的话send_keys在元素上模拟按键输入【这里需要注意的是,我们一般会在脚本开始声明代码的编码格式为utf-8,所以当我们使用中午字符串操作时,应在字符串前面加小u,进行转码标识——send_keys(u”中文内容”)】click单击元素,单击任何可以点击的元素,文字/图片链接,按钮,下拉按钮等。submit提交表单,提交对象是一个表单常用操作方法webdriver中比较常用的操作元素的方法有下面几个:elem=driver.find_element_by_name(“entered_login”)elem.clear()elem.send_keys(“uname)driver.find_element_by_name(entered_password).send_keys(Asd123)driver.find_element_by_id(“login_btn”).submit()鼠标事件ActionChains类鼠标操作的常用方法:context_click()右击double_click()双击drag_and_drop()拖动move_to_element()鼠标悬停在一个元素上click_and_hold()按下鼠标左键在一个元素上鼠标事件ActionChains类鼠标操作的常用方法:#引入ActionChains类fromselenium.webdriver.common.action_chainsimportActionChains……#定位到要右击的元素right=driver.find_element_by_xpath(“xx”)#对定位到的元素执行鼠标右键操作ActionChains(driver).context_click(right).perform()……键盘事件经常使用到的键盘操作:send_key(Keys.BACK_SPACE)删除键(BackSpace)send_key(Keys.SPACE)空格键(space)send_key(Keys.TAB)制表键(tab)send_key(Keys.ESCAPE)回退键(esc)send_key(Keys.ENTER)回车键(enter)send_key(Keys.CONTROL,’a’)全选(ctrl+a)send_key(Keys.CONTROL,’c’)复制(Ctrl+c)send_key(Keys.CONTROL,’x’)剪切(Ctrl+x)send_key(Keys.CONTROL,’v’)粘贴(ctrl+v)键盘事件经常使用到的键盘操作:#引入Keys类fromselenium.webdriver.common.keysimportKeysdriver.find_element_by_id(“username”).clear()driver.find_element_by_id(“username”).send_keys(“username”)设置等待时间Python的time包提供了休眠方法sleep(),导入time包后就可以使用sleep()进行脚本的执行过程进行休眠。#引入time类importtimedriver.find_element_by_id(“username”).clear()driver.find_element_by_id(“username”).send_keys(“username”)time.sleep(2)driver.find_element_by_name(“submit”).click()定位frame中对象webdriver每次只能在一个页面识别,因此才需要用switch_to_frame方法去获取frame中嵌入的页面,对那个页面里的元素进行定位。...#先找到iframe1(id=f1)driver.switch_to_frame(f1)#再找到其下面的iframe2(id=f2)driver.switch_to_frame(f2)...浏览器多窗口处理在本例中所有用到的新方法:current_window_handle#获得当前窗口句柄window_handles#返回的所有窗口的句柄到当前会话switch_to_window()#用于处理多窗口之前切换now_handle=driver.current_window_handle#获取当前窗口句柄driver.switch_to_window(driver.window_handles[-1])#定位到新窗口driver.switch_to_window(now_handle)#返回主窗口cookie处理…#向cookie的name和pwd添加会话信息。driver.add_cookie({'name':'aaa',‘pwd':'bbb'})#遍历cookies中的name和pwd信息打印forcookieindriver.get_cookies():print%s-%s%(cookie['name'],cookie[‘pwd'])#下面可以通过两种方式删除cookie#删除一个特定的cookiedriver.delete_cookie(CookieName)#删除所有cookiedriver.delete_all_cookies()time.sleep(2)…XPath定位AAABBB/CCC/DDDBBB//DDDCCCDDDid=”d1”BBBid=”b1”/BBBid=”b2”/BBBname=”bbb”type=”submit”/BBBname=”bbb”type=”button”/EEE//DDD/CCC/AAAXPath定位//@id选择所有含有id属性的元素//BBB[@id]选择带id属性的BBB元素//BBB[@id=’b1’]选择id属性为b1的BBB元素//DDD[BBB^@id=’b1’]定位DDD元素,该元素要求包含BBB子元素,且该子元素的id属性为b1//BBB[@name=’bbb’]选择name属性为bbb的BBB元素//DDD[@id=’d1’]/BBB[1]选择id属性为d1的DDD元素的第一个BBB子元素//BBB[@name=’bbb’][@type=’button’]选择name属性为bbb,type属性为button的BBB元素//BBB[@*]选择带属性的BBB元素//BBB[not@*]选择所有不带属性的BBB元素XPath定位/AAA/DDD/BBB绝对路径选择BBB元素//BBB选择所有BBB元素//DDD/BBB选择DDD路径下的所有BBB元素//*选择所有元素//CCC/*选择CCC路径下的所有元素/*/*/*/BBB选择有3级父元素的BBB元素//DDD/BBB[1]选择DDD的第一个子元素BBB元素//DDD/BBB[last()]选择DDD路径下最后一个BBB元素//CCC|//BBB选择所有CCC和BBB元素//DDD/BBB|//EEE选择是DDD子元素的BBB元素和所有EEE元素XPath定位XPath定位在Python+selenium中的使用方式:...elem=driver.find_element_by_xpath(//input[@value='查询'][@type='submit'])elem.click()elem=driver.find_element_by_xpath(//td[@id='queryListTableCell-操作-12'])elem.find_element_by_xpath(“//a[@title=‘更多操作']).click()...参考://wenku.baidu.com/link?url=8i8Cn6kPZBX5pHlx6sQS4_3
本文标题:Python+selenium
链接地址:https://www.777doc.com/doc-6788936 .html