非本人編寫? ?原文:https://www.cnblogs.com/jcshuaiashuai/p/10372616.html
1.元素定位
1.1Chrome瀏覽器怎么獲取頁面元素
1.2driver.find_element_by_id()
說明:用頁面id屬性值定位元素
1.2.1例子
from?selenium?import?webdriver
driver=webdriver.Chrome()#通過谷歌瀏覽器驅(qū)動
driver.get('http://www.baidu.com')#打開百度網(wǎng)頁
ele=driver.find_element_by_id("kw")#定位到百度頁面的輸入框
1.3driver.find_element_by_xpath()
說明:通過頁面的xpath值定位元素
1.3.1Chrome瀏覽器怎么獲取xpath值
右擊鼠標,可以復(fù)制xpath值
1.3.2例子
from?selenium?import?webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_xpath("http://*[@id=\"kw\"]")
1.4driver.find_element_by_class_name()
說明:通過頁面的class值定位元素
1.4.1例子
from?selenium?import?webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_class_name("s_ipt")
1.5driver.find_element_by_name()
說明:以頁面的name屬性定位元素
1.5.1例子
from?selenium?import?webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_name("wd")
1.6driver.find_element_by_link_text()
說明:通過頁面上的鏈接定位元素
1.6.1例子
from?selenium?import?webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("新聞")
1.7driver.find_element_by_partial_link_text()
說明:進行超鏈接的模糊查詢
1.7.1例子
from?selenium?import?webdriver
import?time
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_partial_link_text("頻")
time.sleep(3)
ele.click()
1.8find_element_by_css_selector()
說明:通過css選擇器定位
1.8.1例子
from?selenium?import?webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_css_selector("#kw").send_keys("selenium2")
2簡單的元素操作
2.1send_keys()
說明:在input的輸入框內(nèi)輸入值
2.1.1例子
from?selenium?import?webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_id("kw")#定位到元素
ele.send_keys("selenium")#以id定位元素,然后在輸入框內(nèi)輸入selenium
2.2click()
說明:點擊頁面按鈕
2.2.1例子
from?selenium?import?webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_id("kw")
ele.send_keys("selenium")#以id定位元素,然后在輸入框內(nèi)輸入seleniumkey=driver.find_element_by_id("su")
key.click()#定位元素然后點擊
2.3clear()
說明:清除input輸入框內(nèi)的輸入內(nèi)容
2.3.1例子
from?selenium?import?webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_id("kw")
ele.send_keys("selenium")#以id定位元素,然后在輸入框內(nèi)輸入seleniumkey=driver.find_element_by_id("su")
key.click()#定位元素然后點擊ele.clear()#清除輸入空內(nèi)的內(nèi)容
2.4back()
說明:回到前一個頁面
2.4.1例子
from?selenium?import?webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.get("http://www.sina.com")#同一個頁面中從百度跳到新浪driver.back()#從新浪返回百度頁面
2.5forward()
說明:向前進一個頁面
2.5.1例子
from?selenium?import?webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.get("http://www.sina.com")#同一個頁面中從百度跳到新浪driver.back()#從新浪返回百度頁面driver.forward()#前進一個頁面
2.6refresh()
說明:刷新頁面
2.6.1例子
from?selenium?import?webdriver
import?time
driver=webdriver.Chrome()
driver.get("http://www.sina.com")
time.sleep(5)#睡5秒driver.refresh()#刷新頁面
?
2.7submit()
說明:提交,只有表單的時候才能用
2.7.1例子
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_id("kw")
ele.send_keys("selenium")#以id定位元素,然后在輸入框內(nèi)輸入seleniumele.submit()
2.8title
說明:獲取頁面的標題
2.8.1例子
from?selenium?import?webdriver
import?time
driver?= webdriver.Chrome()
driver.get("http://www.baidu.com")
title=driver.title
print(title)
2.9current_url
說明:得到當前頁面的url
2.9.1例子
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
url=driver.current_url
print(url)
2.10quit
說明:退出程序運行
2.10.1例子
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.quit()#退出運行
2.11Text
說明:獲取頁面超鏈接的文本值
2.11.1例子
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登錄")
text=ele.text
print(text)
2.12tag_name
說明:頁面標簽類型
2.12.1例子
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登錄")
tag=ele.tag_name#頁面標簽類型print(tag)
driver.quit()
2.13is_enabled()
說明:頁面元素是否可編輯
2.13.1例子
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登錄")
tag=ele.is_enabled()print(tag)
driver.quit()
2.14isDisplayed()
說明:判斷元素是否用戶可見(有些元素頁面不可見,但是存在代碼中)
2.14.1例子
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登錄")
tag=ele.is_displayed()print(tag)
driver.quit()
2.15get_attribute()
說明:得到頁面屬性對應(yīng)的值
2.15.1例子
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_id("kw")
tag=ele.get_attribute("name")#得到name屬性對應(yīng)的值print(tag)
driver.quit()
2.16set_window_size()
說明:設(shè)置瀏覽器窗口大小
2.16.1例子
_Author_ =?'jc'from?selenium?import?webdriver
driver = webdriver.Chrome()
#打開12306網(wǎng)址driver.get('https://www.12306.cn/index/')
#設(shè)置瀏覽器窗口大小driver.set_window_size(800,800)
#driver.quit()
2.17maximize_window()
說明:窗口最大化
2.17.1例子
from?selenium?import?webdriver
driver = webdriver.Chrome()
#窗口最大化driver.maximize_window()
2.18Size
說明:返回元素的大小
2.18.1例子
from?selenium?import?webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
a = driver.find_element_by_css_selector("#kw").size
print(a)
driver.quit()
3鼠標事件
3.1context_click
說明:右擊操作
3.1.1例子
from?selenium?import?webdriver
from?selenium.webdriver.common.action_chains?import?ActionChains
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
right_click = driver.find_element_by_css_selector("#kw")#定位到需要右擊的元素
ActionChains(driver).context_click(right_click).perform()#右擊,不加perform不顯示右擊的內(nèi)容
3.2move_to_element
說明:鼠標懸停
3.2.1例子
from?selenium?import?webdriver
from?selenium.webdriver.common.action_chains?import?ActionChains
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
above = driver.find_element_by_link_text("設(shè)置")#定位到鼠標懸停的元素ActionChains(driver).move_to_element(above).perform()
3.3double_click
說明:雙擊操作
3.4drag_and_drop
說明:元素拖動
3.4.1例子
from?selenium?import?webdriver
from?selenium.webdriver.common.action_chains?import?ActionChains
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
above = driver.find_element_by_link_text("新聞")#定位到原元素target = driver.find_element_by_id("kw")#定位到目標元素ActionChains(driver).drag_and_drop(above,target).perform()#把原元素拖動到目標元素上去
4鍵盤事件
4.1BACK_SPACE
說明:刪除操作
4.1.1例子
from?selenium?import?webdriver
from?selenium.webdriver.common.keys?import?Keys
import ?time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
time.sleep(2)
element.send_keys(Keys.BACK_SPACE)#刪除操作,刪除多輸入的m
4.2SPACE
說明:輸入空格
4.2.1例子
from?selenium?import?webdriver
from?selenium.webdriver.common.keys?import?Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
element.send_keys(Keys.SPACE)#輸入空格element.send_keys("ok")
4.3Keys.CONTROL,"a"
說明:全選輸入框內(nèi)容
同理:Keys.CONTROL,"v"?粘貼內(nèi)容到輸入框
Keys.CONTROL,"x"??剪貼輸入框內(nèi)容
4.3.1例子
from?seleniumimport?webdriver
from?selenium.webdriver.common.keys?import?Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
element.send_keys(Keys.CONTROL,"a")#ctrl + a ,全選輸入框內(nèi)容
?
4.4Keys.ENTER
說明:回車操作
4.4.1例子
from?selenium?import?webdriver
from?selenium.webdriver.common.keys?import?Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
driver.find_element_by_id("su").send_keys(Keys.ENTER)#回車
5設(shè)置等待
5.1顯示等待
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.get("http://www.126.com")
print(time.ctime())
for?i?in?range(10):
try:
el = driver.find_element_by_class_name('j-inputtext dlpwd')
if?el.is_displayed():#元素是否存在????????????break?#存在就跳出循環(huán)???????except:pass????time.sleep(1)#不然睡一秒繼續(xù)找else:
print('time out')#循環(huán)完了找不到就打印超時????print(time.ctime())#打印當前時間????driver.close()
5.2implicitly_wait()
說明:implicitly_wait():隱式等待?5當使用了隱士等待執(zhí)行測試的時候,如果?WebDriver沒有在 DOM中找到元素,將繼續(xù)等待,超出設(shè)定時間后則拋出找不到元素的異常?6換句話說,當查找元素或元素并沒有立即出現(xiàn)的時候,隱式等待將等待一段時間再查找?DOM,默認的時間是0?7一旦設(shè)置了隱式等待,則它存在整個?WebDriver 對象實例的聲明周期中,隱式的等到會讓一個正常響應(yīng)的應(yīng)用的測試變慢,?8它將會在尋找每個元素的時候都進行等待,這樣會增加整個測試執(zhí)行的時間。
5.2.1例子
from?selenium?import?webdriver
from?selenium.common.exceptions?import?NoSuchElementException
import?time
driver = webdriver.Chrome()
driver.implicitly_wait(10)#設(shè)置了全局查找元素10秒
driver.get("http://www.baidu.com")
print(time.ctime())
try:
driver.find_element_by_id('2kw').send_keys('selenium')
except?NoSuchElementException?as?e:?#沒有找到元素就拋出沒有找到的異常????print(e)
finally:
print(time.ctime())
driver.close()
5.3Sleep休眠方式
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)
driver.find_element_by_id('kw').send_keys("postman")
time.sleep(3)
driver.find_element_by_id('su').click()
time.sleep(2)
driver.quit()
6定位一組元素
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
#設(shè)置瀏覽器窗口大小driver.maximize_window()
#打開12306網(wǎng)址driver.get('https://www.12306.cn/index/')
url2 = driver.current_url
time.sleep(3)
url1 = driver.current_url
#查找登錄的鏈接driver.find_element_by_xpath('//*[@id="J-header-login"]/a[1]').click()
time.sleep(3)
#跳轉(zhuǎn)到賬號登錄driver.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a').click()
time.sleep(5)
#賬號框輸入賬號eles = driver.find_elements_by_tag_name('input')#找出頁面上的所有input輸入框,比單個定位element后多了個sfor?i?in?eles:
if?i.get_attribute('class') ==?'input':#如果輸入框的class屬性等于input就執(zhí)行下一步????????i.send_keys('selenium')
time.sleep(2)
7多表單切換(iframe)
見selenuim2自動化測試實戰(zhàn)基于python語言(p104)
8多窗口切換
from?selenium?import?webdriver
import?time
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
handle = driver.current_window_handle?#獲取當前頁面(百度搜索頁面)的句柄driver.find_element_by_link_text('登錄').click()
driver.find_element_by_link_text('立即注冊').click()
handles = driver.window_handles#獲取當前打開頁面所有的句柄for?i?in?handles:
if?i == handle:?#判斷句柄是否為百度搜索頁面????????driver.switch_to.window(i)#切換到搜索頁面????????driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__closeBtn"]').click()#關(guān)掉打開的小窗口????????driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
time.sleep(3)
else:
driver.switch_to.window(i)#切換到注冊頁面????????driver.find_element_by_name('userName').send_keys('jack')
time.sleep(3)
driver.quit()
9警告對話框處理
from?selenium?import?webdriver
from?selenium.webdriver.common.action_chains?import?ActionChains
import?time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele = driver.find_element_by_link_text('設(shè)置')
ActionChains(driver).move_to_element(ele).perform()#懸停在設(shè)置上time.sleep(2)
driver.find_element_by_link_text('搜索設(shè)置').click()
time.sleep(2)
ele = driver.find_element_by_xpath('//*[@id="gxszButton"]/a[1]')#按下保存設(shè)置會跳出javascript的警告對話框ele.click()
time.sleep(2)
print(driver.switch_to_alert().text)#打印警告對話框的文字# driver.switch_to_alert().dismiss()#取消警告對話框# driver.switch_to_alert().send_keys('ik')#發(fā)送文本到警告對話框driver.switch_to_alert().accept()#接受警告
10操作cookie
10.1Get_cookie
from?selenium?import?webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
cookie = driver.get_cookies()#h獲取頁面的cookieprint(cookie)
10.2add_cookie
from?selenium?import?webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值cookie = driver.get_cookies()#h獲取頁面的cookiefor?i?in?cookie:
print('%s >> %s'?% (i['name'],i['value']))
driver.quit()
10.3?delete_cookie
from?selenium?import?webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值cookie = driver.get_cookies()#h獲取頁面的cookiefor?i?in?cookie:
print('%s >> %s'?% (i['name'],i['value']))
driver.delete_cookie('userName')#刪除名字為userName的cookiecookie2 = driver.get_cookies()
for?i?in?cookie2:
print('%s >> %s'?% (i['name'],i['value']))
driver.quit()
10.4delete_all_cookies
from?selenium?import?webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值cookie = driver.get_cookies()#h獲取頁面的cookiefor?i?in?cookie:
print('%s >> %s'?% (i['name'],i['value']))
driver.delete_all_cookies()#刪除所有的cookiecookie2 = driver.get_cookies()
for?i?in?cookie2:
print('%s >> %s'?% (i['name'],i['value']))
driver.quit()
11調(diào)用javascript
from?selenium?import?webdriver
from?time?import?sleep
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
#設(shè)置瀏覽器窗口大小driver.set_window_size(600,600)
#搜索內(nèi)容driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
sleep(2)
#通過javascript設(shè)置瀏覽器窗口的滾動條位置js='window.scrollTo(100,450);'#執(zhí)行script語句driver.execute_script(js)
sleep(3)
1.?元素定位
1.1?Chrome瀏覽器怎么獲取頁面元素
need-to-insert-img
need-to-insert-img
1.2?driver.find_element_by_id()
說明:用頁面id屬性值定位元素
need-to-insert-img
1.2.1?例子
from?selenium?import?webdriverdriver=webdriver.Chrome()#通過谷歌瀏覽器驅(qū)動driver.get('http://www.baidu.com')#打開百度網(wǎng)頁ele=driver.find_element_by_id("kw")#定位到百度頁面的輸入框
1.3?driver.find_element_by_xpath()
說明:通過頁面的xpath值定位元素
1.3.1?Chrome瀏覽器怎么獲取xpath值
右擊鼠標,可以復(fù)制xpath值
need-to-insert-img
1.3.2?例子
from?selenium?import?webdriverdriver=webdriver.Chrome()driver.get('http://www.baidu.com')ele=driver.find_element_by_xpath("http://*[@id=\"kw\"]")
1.4?driver.find_element_by_class_name()
說明:通過頁面的class值定位元素
need-to-insert-img
1.4.1?例子
from?selenium?import?webdriverdriver=webdriver.Chrome()driver.get('http://www.baidu.com')ele=driver.find_element_by_class_name("s_ipt")
1.5?driver.find_element_by_name()
說明:以頁面的name屬性定位元素
need-to-insert-img
1.5.1?例子
from?selenium?import?webdriverdriver=webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_name("wd")
1.6?driver.find_element_by_link_text()
說明:通過頁面上的鏈接定位元素
need-to-insert-img
1.6.1?例子
from?selenium?import?webdriverdriver=webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_link_text("新聞")
1.7?driver.find_element_by_partial_link_text()
說明:進行超鏈接的模糊查詢
1.7.1?例子
from?selenium?import?webdriverimport?timedriver=webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_partial_link_text("頻")time.sleep(3)ele.click()
1.8?find_element_by_css_selector()
說明:通過css選擇器定位
1.8.1?例子
from?selenium?import?webdriverdriver = webdriver.Chrome()driver.get("http://www.baidu.com")driver.find_element_by_css_selector("#kw").send_keys("selenium2")
2?簡單的元素操作
2.1?send_keys()
說明:在input的輸入框內(nèi)輸入值
2.1.1?例子
from?selenium?import?webdriverdriver=webdriver.Chrome()driver.get('http://www.baidu.com')ele=driver.find_element_by_id("kw")#定位到元素ele.send_keys("selenium")#以id定位元素,然后在輸入框內(nèi)輸入selenium
2.2?click()
說明:點擊頁面按鈕
2.2.1?例子
from?selenium?import?webdriverdriver=webdriver.Chrome()driver.get('http://www.baidu.com')ele=driver.find_element_by_id("kw")ele.send_keys("selenium")#以id定位元素,然后在輸入框內(nèi)輸入seleniumkey=driver.find_element_by_id("su")key.click()#定位元素然后點擊
2.3?clear()
說明:清除input輸入框內(nèi)的輸入內(nèi)容
2.3.1?例子
from?selenium?import?webdriverdriver=webdriver.Chrome()driver.get('http://www.baidu.com')ele=driver.find_element_by_id("kw")ele.send_keys("selenium")#以id定位元素,然后在輸入框內(nèi)輸入seleniumkey=driver.find_element_by_id("su")key.click()#定位元素然后點擊ele.clear()#清除輸入空內(nèi)的內(nèi)容
2.4?back()
說明:回到前一個頁面
2.4.1?例子
from?selenium?import?webdriverdriver=webdriver.Chrome()driver.get("http://www.baidu.com")driver.get("http://www.sina.com")#同一個頁面中從百度跳到新浪driver.back()#從新浪返回百度頁面
2.5?forward()
說明:向前進一個頁面
2.5.1?例子
from?selenium?import?webdriverdriver=webdriver.Chrome()driver.get("http://www.baidu.com")driver.get("http://www.sina.com")#同一個頁面中從百度跳到新浪driver.back()#從新浪返回百度頁面driver.forward()#前進一個頁面
2.6?refresh()
說明:刷新頁面
2.6.1?例子
from?selenium?import?webdriverimport?timedriver=webdriver.Chrome()driver.get("http://www.sina.com")time.sleep(5)#睡5秒driver.refresh()#刷新頁面
?
2.7?submit()
說明:提交,只有表單的時候才能用
2.7.1?例子
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_id("kw")ele.send_keys("selenium")#以id定位元素,然后在輸入框內(nèi)輸入seleniumele.submit()
2.8?title
說明:獲取頁面的標題
need-to-insert-img
2.8.1?例子
from?selenium?import?webdriverimport?timedriver?= webdriver.Chrome()driver.get("http://www.baidu.com")title=driver.titleprint(title)
2.9?current_url
說明:得到當前頁面的url
2.9.1?例子
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")url=driver.current_urlprint(url)
2.10?quit
說明:退出程序運行
2.10.1?例子
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")driver.quit()#退出運行
2.11?Text
說明:獲取頁面超鏈接的文本值
2.11.1?例子
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_link_text("登錄")text=ele.textprint(text)
2.12?tag_name
說明:頁面標簽類型
need-to-insert-img
2.12.1?例子
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_link_text("登錄")tag=ele.tag_name#頁面標簽類型print(tag)driver.quit()
2.13?is_enabled()
說明:頁面元素是否可編輯
2.13.1?例子
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_link_text("登錄")tag=ele.is_enabled()print(tag)driver.quit()
2.14?isDisplayed()
說明:判斷元素是否用戶可見(有些元素頁面不可見,但是存在代碼中)
2.14.1?例子
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_link_text("登錄")tag=ele.is_displayed()print(tag)driver.quit()
2.15?get_attribute()
說明:得到頁面屬性對應(yīng)的值
need-to-insert-img
2.15.1?例子
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_id("kw")tag=ele.get_attribute("name")#得到name屬性對應(yīng)的值print(tag)driver.quit()
2.16?set_window_size()
說明:設(shè)置瀏覽器窗口大小
2.16.1?例子
_Author_ =?'jc'from?selenium?import?webdriverdriver = webdriver.Chrome()#打開12306網(wǎng)址driver.get('https://www.12306.cn/index/')#設(shè)置瀏覽器窗口大小driver.set_window_size(800,800)#driver.quit()
2.17?maximize_window()
說明:窗口最大化
2.17.1?例子
from?selenium?import?webdriverdriver = webdriver.Chrome()#窗口最大化driver.maximize_window()
2.18?Size
說明:返回元素的大小
2.18.1?例子
from?selenium?import?webdriverdriver = webdriver.Chrome()driver.get("http://www.baidu.com")a = driver.find_element_by_css_selector("#kw").sizeprint(a)driver.quit()
3?鼠標事件
3.1?context_click
說明:右擊操作
3.1.1?例子
from?selenium?import?webdriverfrom?selenium.webdriver.common.action_chains?import?ActionChainsdriver = webdriver.Chrome()driver.get("http://www.baidu.com")right_click = driver.find_element_by_css_selector("#kw")#定位到需要右擊的元素ActionChains(driver).context_click(right_click).perform()#右擊,不加perform不顯示右擊的內(nèi)容
3.2?move_to_element
說明:鼠標懸停
3.2.1?例子
from?selenium?import?webdriverfrom?selenium.webdriver.common.action_chains?import?ActionChainsdriver = webdriver.Chrome()driver.get("http://www.baidu.com")above = driver.find_element_by_link_text("設(shè)置")#定位到鼠標懸停的元素ActionChains(driver).move_to_element(above).perform()
3.3?double_click
說明:雙擊操作
3.4?drag_and_drop
說明:元素拖動
3.4.1?例子
from?selenium?import?webdriverfrom?selenium.webdriver.common.action_chains?import?ActionChainsdriver = webdriver.Chrome()driver.get("http://www.baidu.com")above = driver.find_element_by_link_text("新聞")#定位到原元素target = driver.find_element_by_id("kw")#定位到目標元素ActionChains(driver).drag_and_drop(above,target).perform()#把原元素拖動到目標元素上去
4?鍵盤事件
4.1?BACK_SPACE
說明:刪除操作
4.1.1?例子
from?selenium?import?webdriverfrom?selenium.webdriver.common.keys?import?Keysimport ?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")element = driver.find_element_by_id("kw")element.send_keys("selenium")time.sleep(2)element.send_keys(Keys.BACK_SPACE)#刪除操作,刪除多輸入的m
4.2?SPACE
說明:輸入空格
4.2.1?例子
from?selenium?import?webdriverfrom?selenium.webdriver.common.keys?import?Keysdriver = webdriver.Chrome()driver.get("http://www.baidu.com")element = driver.find_element_by_id("kw")element.send_keys("selenium")element.send_keys(Keys.SPACE)#輸入空格element.send_keys("ok")
4.3?Keys.CONTROL,"a"
說明:全選輸入框內(nèi)容
同理:Keys.CONTROL,"v"?粘貼內(nèi)容到輸入框
Keys.CONTROL,"x"??剪貼輸入框內(nèi)容
4.3.1?例子
from?selenium?import?webdriverfrom?selenium.webdriver.common.keys?import?Keysdriver = webdriver.Chrome()driver.get("http://www.baidu.com")element = driver.find_element_by_id("kw")element.send_keys("selenium")element.send_keys(Keys.CONTROL,"a")#ctrl + a ,全選輸入框內(nèi)容
?
4.4?Keys.ENTER
說明:回車操作
4.4.1?例子
from?selenium?import?webdriverfrom?selenium.webdriver.common.keys?import?Keysdriver = webdriver.Chrome()driver.get("http://www.baidu.com")element = driver.find_element_by_id("kw")element.send_keys("selenium")driver.find_element_by_id("su").send_keys(Keys.ENTER)#回車
5?設(shè)置等待
5.1?顯示等待
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.126.com")print(time.ctime())for?i?in?range(10):
????try:????????el = driver.find_element_by_class_name('j-inputtext dlpwd')????????if?el.is_displayed():#元素是否存在????????????break?#存在就跳出循環(huán)???????except:pass????time.sleep(1)#不然睡一秒繼續(xù)找else:????print('time out')#循環(huán)完了找不到就打印超時????print(time.ctime())#打印當前時間????driver.close()
5.2?implicitly_wait()
說明:implicitly_wait():隱式等待?5?當使用了隱士等待執(zhí)行測試的時候,如果?WebDriver沒有在 DOM中找到元素,將繼續(xù)等待,超出設(shè)定時間后則拋出找不到元素的異常?6?換句話說,當查找元素或元素并沒有立即出現(xiàn)的時候,隱式等待將等待一段時間再查找?DOM,默認的時間是0?7?一旦設(shè)置了隱式等待,則它存在整個?WebDriver 對象實例的聲明周期中,隱式的等到會讓一個正常響應(yīng)的應(yīng)用的測試變慢,?8?它將會在尋找每個元素的時候都進行等待,這樣會增加整個測試執(zhí)行的時間。
5.2.1?例子
from?selenium?import?webdriverfrom?selenium.common.exceptions?import?NoSuchElementExceptionimport?timedriver = webdriver.Chrome()driver.implicitly_wait(10)#設(shè)置了全局查找元素10秒driver.get("http://www.baidu.com")print(time.ctime())try:????driver.find_element_by_id('2kw').send_keys('selenium')except?NoSuchElementException?as?e:?#沒有找到元素就拋出沒有找到的異常????print(e)finally:????print(time.ctime())????driver.close()
5.3?Sleep休眠方式
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.implicitly_wait(10)driver.get("http://www.baidu.com")time.sleep(2)driver.find_element_by_id('kw').send_keys("postman")time.sleep(3)driver.find_element_by_id('su').click()time.sleep(2)driver.quit()
6?定位一組元素
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()#設(shè)置瀏覽器窗口大小driver.maximize_window()#打開12306網(wǎng)址driver.get('https://www.12306.cn/index/')url2 = driver.current_urltime.sleep(3)url1 = driver.current_url#查找登錄的鏈接driver.find_element_by_xpath('//*[@id="J-header-login"]/a[1]').click()time.sleep(3)#跳轉(zhuǎn)到賬號登錄driver.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a').click()time.sleep(5)#賬號框輸入賬號eles = driver.find_elements_by_tag_name('input')#找出頁面上的所有input輸入框,比單個定位element后多了個sfor?i?in?eles:????if?i.get_attribute('class') ==?'input':#如果輸入框的class屬性等于input就執(zhí)行下一步????????i.send_keys('selenium')????????time.sleep(2)
7?多表單切換(iframe)
見selenuim2自動化測試實戰(zhàn)基于python語言(p104)
8?多窗口切換
from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.implicitly_wait(10)driver.get("http://www.baidu.com")handle = driver.current_window_handle?#獲取當前頁面(百度搜索頁面)的句柄driver.find_element_by_link_text('登錄').click()driver.find_element_by_link_text('立即注冊').click()handles = driver.window_handles#獲取當前打開頁面所有的句柄for?i?in?handles:????if?i == handle:?#判斷句柄是否為百度搜索頁面????????driver.switch_to.window(i)#切換到搜索頁面????????driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__closeBtn"]').click()#關(guān)掉打開的小窗口????????driver.find_element_by_id('kw').send_keys('selenium')????????driver.find_element_by_id('su').click()????????time.sleep(3)????else:????????driver.switch_to.window(i)#切換到注冊頁面????????driver.find_element_by_name('userName').send_keys('jack')time.sleep(3)driver.quit()
9?警告對話框處理
from?selenium?import?webdriverfrom?selenium.webdriver.common.action_chains?import?ActionChainsimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")ele = driver.find_element_by_link_text('設(shè)置')ActionChains(driver).move_to_element(ele).perform()#懸停在設(shè)置上time.sleep(2)driver.find_element_by_link_text('搜索設(shè)置').click()time.sleep(2)ele = driver.find_element_by_xpath('//*[@id="gxszButton"]/a[1]')#按下保存設(shè)置會跳出javascript的警告對話框ele.click()time.sleep(2)print(driver.switch_to_alert().text)#打印警告對話框的文字# driver.switch_to_alert().dismiss()#取消警告對話框# driver.switch_to_alert().send_keys('ik')#發(fā)送文本到警告對話框driver.switch_to_alert().accept()#接受警告
10?操作cookie
10.1?Get_cookie
from?selenium?import?webdriverdriver = webdriver.Chrome()driver.get("http://www.baidu.com")cookie = driver.get_cookies()#h獲取頁面的cookieprint(cookie)
10.2?add_cookie
from?selenium?import?webdriverdriver = webdriver.Chrome()driver.get("http://www.baidu.com")driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值cookie = driver.get_cookies()#h獲取頁面的cookiefor?i?in?cookie:????print('%s >> %s'?% (i['name'],i['value']))driver.quit()
10.3??delete_cookie
from?selenium?import?webdriverdriver = webdriver.Chrome()driver.get("http://www.baidu.com")driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值cookie = driver.get_cookies()#h獲取頁面的cookiefor?i?in?cookie:????print('%s >> %s'?% (i['name'],i['value']))driver.delete_cookie('userName')#刪除名字為userName的cookiecookie2 = driver.get_cookies()for?i?in?cookie2:????print('%s >> %s'?% (i['name'],i['value']))driver.quit()
10.4?delete_all_cookies
from?selenium?import?webdriverdriver = webdriver.Chrome()driver.get("http://www.baidu.com")driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值cookie = driver.get_cookies()#h獲取頁面的cookiefor?i?in?cookie:????print('%s >> %s'?% (i['name'],i['value']))driver.delete_all_cookies()#刪除所有的cookiecookie2 = driver.get_cookies()for?i?in?cookie2:????print('%s >> %s'?% (i['name'],i['value']))driver.quit()
11?調(diào)用javascript
from?selenium?import?webdriverfrom?time?import?sleepdriver = webdriver.Chrome()driver.get('http://www.baidu.com')#設(shè)置瀏覽器窗口大小driver.set_window_size(600,600)#搜索內(nèi)容driver.find_element_by_id('kw').send_keys('selenium')driver.find_element_by_id('su').click()sleep(2)#通過javascript設(shè)置瀏覽器窗口的滾動條位置js='window.scrollTo(100,450);'#執(zhí)行script語句driver.execute_script(js)sleep(3)