导入模块:
from selenium import webdriver from selenium.common.exceptions import NoSuchElementException
选择浏览器:driver = webdriver.Firefox()
打开url:driver.get("http://www.baidu.com")
等待:driver.implicitly_wait(30)
driver.set_page_load_timeout(30)
driver.set_script_timeout(30)
关闭浏览器:driver.quit()/driver.close()
添加休眠:time.sleep()
智能等待:implicitly_wait()
打印title:driver.title
打印URL:print "now access %s"%(url)
get(url)
浏览器最大化:maximize_window()
设置浏览器长宽:set_window_size(x,y)
前进/后退:driver.forward()/driver.back()
刷新:driver.refresh()
返回当前页面标题:driver.title
返回当前页面url:driver.current_url
返回当前浏览器的所有窗口:driver.window_handles
返回当前浏览器的窗口句柄:driver.current_window_handle
选择窗口:driver.switch_to_window(“window_name”)
对话框操作:driver.switch_to_alert() #选择窗口对象
driver.switch_to_frame() #多层框架定位。
accept() #点击确认
dismiss() #点击取消
click() #点击对象
context_click() #右击
double_click() #双击
drag_and_drop() #拖动
clear() #清除对象内容
submit() #提交表单
text #获取文本值
send_keys(“key”) #输入值
get_attribute() #获得属性值
定位元素(单个):driver.find_element(by=”id”,value=None)
Id定位: driver.find_element_by_id(“id_name”)
Name定位:driver.find_element_by_name(“name”)
Css定位: driver.find_element_by_css_selector(“#foo”)
Xpath定位:driver.find_element_by_xpath(“//select[@id=’nr’]/option[2]”)
Link定位:driver.find_element_by_link_text(u”链接”)
Tag定位: driver.find_element_by_tag_name(“foo”)
截取当前页面: driver.get_screenshot_as_file('/Screenshots/foo.png')
HTMLTestRunner测试结果保存:
# -*- coding: UTF-8 -*- from selenium import webdriver # from selenium webdriver.common.by import By # from selenium webdriver.common.keys import Keys # from selenium webdriver.common.support.ui import Select from selenium.common.exceptions import NoSuchElementException import HTMLTestRunner import unittest,time,re from fileinput import filename from lxml.html._diffcommand import description class Baidu(unittest.TestCase): def setUp(self): self.driver=webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url="http://www.baidu.com/" self.verificationErrors=[] self.accept_next_alert=True #test_baidu_search def test_baidu_search(self): driver=self.driver driver.get(self.base_url+"/") driver.find_element_by_id("kw").send_keys("selenium webdriver") driver.find_element_by_id("su").click() time.sleep(2) driver.close() #test_baidu_set def test_baidu_set(self): driver=self.driver #get(self.base_url driver.get(self.base_url+"/gaoji/preferences.html") #value='100 m=driver.find_element_by_name("NR") m.find_element_by_xpath("//option[@value='100']").click() time.sleep(2) #accept driver.find_element_by_xpath("//input[@value='保存设置']").click() time.sleep(2) driver.switch_to_alert().accept() def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__=="__main__": testunit=unittest.TestSuite() testunit.addTest(Baidu("test_baidu_search")) testunit.addTest(Baidu("test_baidu_set")) filename='D: esult.html' fp=file(r'D: esult.html','wb') runner=HTMLTestRunner.HTMLTestRunner( stream=fp, title='Test_baidu', description='testbaiu') runner.run(testunit)
IOError: [Errno 22] invalid mode ('r') or filename:
这种错误的出现是在使用built-in函数file()或者open()的时候。或者是因为文件的打开模式不对,或者是文件名有问题。前者的话只需要注意文件是否可读或者可写就可以了。后者则是与文件路径相关的问题,需要在文件名前加r或者R转义,如:file(r"e:Test.txt",'r').或者将反斜杠变成两个,如file("e:\Test.txt",'r').