一.定位元素
(1)id定位
driver.find_element_by_id("id")
(2)name定位
driver.find_element_by_name("name")
(3)class定位
driver.find_element_by_class_name("class_name")
(4)tag定位(<div>,<input>,<a>)
driver.find_element_by_tag_name("input")
(5)link定位(a里面定义的link_text)
driver.find_element_by_link_text("百度地图")
(6)partial link定位(a标签内部名称的一部分)
driver.find_element_by_partial_link_text("地图")
(7)XPath定位
1)绝对路径
driver.find_element_by_xpath("/html/body/div/div[2]/div/div/from/span/input")
2)元素属性定位
driver.find_element_by_xpath("//input[@id='kw']")
driver.find_element_by_xpath("//*[@class='s_bg']")#不指定标签
3)层级和属性结
driver.find_element_by_xpath("//span[@id='form']/span/input")
4)使用逻辑运算符定位
driver.find_element_by_xpath("//input[@id='aa'and @name='bb']/span/input")
(8)css定位
1)class属性定位
driver.find_element_by_css_selector(".s_bg")
2)id属性定位
driver.find_element_by_css_selector("#su")
3)标签名定位
driver.find_element_by_css_selector("input")
driver.find_element_by_css_selector("span>input") #父子关系
driver.find_element_by_css_selector("[autocomplete=off]") #属性
driver.find_element_by_css_selector("form.fm>span>input.s_bg") #组合
二.对元素的简单操作函数
(1)清除
driver.find_element_by_id().clear()
(2)点击
driver.find_element_by_id().click()
(3)输入
driver.find_element_by_id().send_keys("username")
(4)提交表单,可当做回车键使用,与click()互换使用,范围比click()小
driver.find_element_by_id().submit()
(5)元素大小
size=driver.find_element_by_id().size
(6)获取元素的文本
text=driver.find_element_by_id().text
(7)获取类型
driver.find_element_by_id().get_attribute('type')
(8)是否可见,返回值是ture or false
driver.find_element_by_id().is_displayed()
(9)获取当前页面标题
title=driver.title
(10)获取当前页面的url
url=driver.current_url
(11)隐式等待
driver.implicitly_wait(10)
三.常用的函数
1.控制浏览器
(1)控制浏览器大小
driver.set_window_size(400,800)
(2)控制浏览器前进后退
driver.back()
driver.forward()
(3)刷新
driver.refresh()
2.鼠标事件
导入ActionChains
from selenium.webdriver.common.action_chains import ActionChains
(1)鼠标右击
right_click=driver.find_element_by_id("xx") #定位要右击的元素
ActionChains(driver).context_click(right_click).perform()
(2)鼠标悬停-- move_to_element()
above=driver.find_element_by_id("id")
ActionChains(driver).move_to_element(above).perform()
(3)鼠标双击操作
ActionChains(driver).double_click().perform()
(4)鼠标拖动操作----drag_and_drop(source,target)
source=driver.find_element_by_id("xx")#source:鼠标拖动的源元素
target=driver.find_element_by_id("xx")#target:鼠标拖动的目标元素
ActionChains(driver).drag_and_drop(source,target).perform()
3.键盘事件
导入Keys类
from selenium.webdriver.common.keys import Keys
(1)driver.find_element_by_id().send_keys(Key.BACK_SPACE) #删除键
(2)driver.find_element_by_id().send_keys(Keys.SPACE) #空格键
(3)driver.find_element_by_id().send_keys(Keys.TAB) #制表键
(4)driver.find_element_by_id().send_keys(Keys.ESCAPE) #回退键
(5)driver.find_element_by_id().send_keys(Keys.ENTER) #回车键
(6)driver.find_element_by_id().send_keys(Keys.CONTROL,'a') #全选
(7)driver.find_element_by_id().send_keys(Keys.CONTROL,'c') #复制
(8)driver.find_element_by_id().send_keys(Keys.CONTROL,'x') #剪切
(9)driver.find_element_by_id().send_keys(Keys.CONTROL,'v') #粘贴
(10)driver.find_element_by_id().send_keys(Keys.F1) #键盘F1
4.警告框的处理--- switch_to_alert()
(1)获取警示框的文本
driver.switch_to_alert().text
(2)接受警示
driver.switch_to_alert().accept()
(3)解散警示框
driver.switch_to_alert().dismiss()
(4)发送文本至警告
driver.switch_to_alert().send_keys(keysToSend)
5.上传文件----send_keys()
driver.find_element_by_id("file").send_keys('D:\upload_file.txt')
6.操作cookie
(1)获取全部
driver.get_cookie()
(2)获取cookie的name
driver.get_cookie(name)
(3)添加cookie信息
driver.add_cookie({'name':'aa','value':'bb'})
(4)删除特定的cookie
driver.delete_cookie(name,optionString)
(5)删除全部cookie
driver.delete_all_cookies()
7.执行js得到整个HTML
html = driver.execute_script("return document.documentElement.outerHTML")
html=driver.page_source
elem = driver.find_element_by_xpath("//*")
source_code = elem.get_attribute("outerHTML")
elem = wd.find_element_by_css_selector('#my-id')
html = wd.execute_script("return arguments[0].innerHTML;", elem)
selenium控制滚轮滑动,即在受控浏览器中使用js来控制滚轮滑动。
js中scrollIntoView()的用法
1、移动到元素element对象的“底端”,与当前窗口的“底部”对齐:
driver.execute_script("arguments[0].scrollIntoView(false);",element)
2、移动到元素element对象的”顶端“,与当前窗口的”顶部“对齐(默认true):
driver.execute_script("arguments[0].scrollIntoview();", element)
3、移动到页面底部:
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
4、移动到页面顶部:
driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")
5、浏览器页面向下滑动到5000位置:
driver.execute_script("window.scrollTo(0,5000)")
6、向下滑动1000个像素
driver.execute_script("window.scrollBy(0,1000)")