簡(jiǎn)介:
網(wǎng)上找了蠻久窄潭,好多中文api文檔都被設(shè)置權(quán)限瀏覽沐批,趁還未完全被商業(yè)化从铲,記錄一個(gè)方便日后使用
注:任何形式轉(zhuǎn)載文章瘪校,請(qǐng)留言作者并注明出處)
作者:Simon0903
鏈接:http://www.reibang.com/u/2b4bc3b5e6fc
來(lái)源:簡(jiǎn)書(shū)
簡(jiǎn)書(shū)著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處名段。
調(diào)用說(shuō)明:
driver.屬性值
變量說(shuō)明:
1.driver.current_url:用于獲得當(dāng)前頁(yè)面的URL
2.driver.title:用于獲取當(dāng)前頁(yè)面的標(biāo)題
3.driver.page_source:用于獲取頁(yè)面html源代碼??
4.driver.current_window_handle:用于獲取當(dāng)前窗口句柄
5.driver.window_handles:用于獲取所有窗口句柄
函數(shù)說(shuō)明:
一阱扬、定位模塊.driver.find_element_*():定位元素()
? ??????????By.id:driver.findElement(By.id("id));
????????????By.name:driver.findElement(By.name("name"));
????????????By.xpath:driver.findElement(By.xpath("http://input[@id='id']"));?
????????????By.className:driver.findElement(By.className("input_class"));
????????????By.cssSelector:driver.findElement(By.cssSelector(".input_class"));
????????????By.linkText:driver.findElement(By.linkText("link"));
????????????By.partialLinkText:driver.findElement(By.partialLinkText("link"));
????????????By.tagName:driver.findElement(By.tagName("form"));
2.driver.get(url):? #瀏覽器加載url。? ?
? ??????????實(shí)例:driver.get("http//:www.baidu.com")
3.driver.forward():#瀏覽器向前(點(diǎn)擊向前按鈕)伸辟。
4.driver.back():#瀏覽器向后(點(diǎn)擊向后按鈕)麻惶。
5.driver.refresh():#瀏覽器刷新(點(diǎn)擊刷新按鈕)。
6.driver.close():#關(guān)閉當(dāng)前窗口信夫,或最后打開(kāi)的窗口窃蹋。
7.driver.quit():關(guān)閉所有關(guān)聯(lián)窗口,#并且安全關(guān)閉session静稻。
8.driver.maximize_window():? #最大化瀏覽器窗口脐彩。
9.driver.set_window_size(寬,高):#設(shè)置瀏覽器窗口大小姊扔。
10.driver.get_window_size():#獲取當(dāng)前窗口的長(zhǎng)和寬惠奸。
11.driver.get_window_position(): #獲取當(dāng)前窗口坐標(biāo)。
12.driver.get_screenshot_as_file(filename):? #截取當(dāng)前窗口恰梢。?
? ??????????????實(shí)例:driver.get_screenshot_as_file('D:/selenium/image/baidu.jpg')
13.driver.implicitly_wait(秒): #隱式等待佛南,通過(guò)一定的時(shí)長(zhǎng)等待頁(yè)面上某一元素加載完成。若提前定位到元素嵌言,則繼續(xù)執(zhí)行嗅回。若超過(guò)時(shí)間未加載出,則拋出NoSuchElementException異常摧茴。
????????????????實(shí)例:driver.implicitly_wait(10) #等待10秒
14.driver.switch_to_frame(id或name屬性值): #切換到新表單(同一窗口)绵载。若無(wú)id或?qū)傩灾担上韧ㄟ^(guò)xpath定位到iframe苛白,再將值傳給switch_to_frame()
15.driver.switch_to.parent_content(): #跳出當(dāng)前iframe標(biāo)簽內(nèi)嵌的表單(往上回退一級(jí)目錄)娃豹。該方法默認(rèn)對(duì)應(yīng)于離它最近的switch_to.frame()方法。
16.driver.switch_to.default_content(): #跳回最外層的html頁(yè)面购裙。
17.driver.switch_to_window(窗口句柄):#切換到新窗口懂版。
18.driver.switch_to_alert(): #警告框處理。處理JavaScript所生成的alert,confirm,prompt.
19.driver.execute_script(js): #調(diào)用js躏率。
20.driver.get_cookies(): #獲取當(dāng)前會(huì)話所有cookie信息躯畴。
21.driver.get_cookie(cookie_name):#返回字典的key為“cookie_name”的cookie信息民鼓。
????????????????實(shí)例:driver.get_cookie("NET_SessionId")
22.driver.add_cookie(cookie_dict):添加cookie。#“cookie_dict”指字典對(duì)象蓬抄,必須有name和value值丰嘉。
23.driver.delete_cookie(name,optionsString):#刪除cookie信息。
24.driver.delete_all_cookies(): #刪除所有cookie信息嚷缭。
25.element.isDisplay();? #判斷元素是否顯示
26.element.getAttribute()? #得到元素的屬性值????
二饮亏、動(dòng)作鏈
driver.navigate().to("http://www.baidu.com/");???#打開(kāi)百度
driver.navigate().forward()?#?向前
driver.navigate().back()? #?向后
driver.navigate().refresh()? ? # 刷新
鼠標(biāo)操作
ActionChains方法列表
move_by_offset(xoffset, yoffset) ——鼠標(biāo)從當(dāng)前位置移動(dòng)到某個(gè)坐標(biāo)
move_to_element(to_element) ——鼠標(biāo)移動(dòng)到某個(gè)元素
move_to_element_with_offset(to_element, xoffset, yoffset) ——移動(dòng)到距某個(gè)元素(左上角坐標(biāo))多少距離的位置
click(on_element=None)? #單擊鼠標(biāo)左鍵
click_and_hold(on_element=None) #點(diǎn)擊鼠標(biāo)左鍵,不松開(kāi)
context_click(on_element=None) #點(diǎn)擊鼠標(biāo)右鍵
double_click(on_element=None) #雙擊鼠標(biāo)左鍵
drag_and_drop(source, target) #拖拽到某個(gè)元素然后松開(kāi)
drag_and_drop_by_offset(source, xoffset, yoffset) #拖拽到某個(gè)坐標(biāo)然后松開(kāi)
key_down(value, element=None) #按下某個(gè)鍵盤(pán)上的鍵
key_up(value, element=None) #松開(kāi)某個(gè)鍵
move_by_offset(xoffset, yoffset) #鼠標(biāo)從當(dāng)前位置移動(dòng)到某個(gè)坐標(biāo)
move_to_element(to_element) #鼠標(biāo)移動(dòng)到某個(gè)元素
move_to_element_with_offset(to_element, xoffset, yoffset) #移動(dòng)到距某個(gè)元素(左上角坐標(biāo))多少距離的位置
perform()#執(zhí)行鏈中的所有動(dòng)作
release(on_element=None) #在某個(gè)元素位置松開(kāi)鼠標(biāo)左鍵
send_keys(*keys_to_send)? ?#發(fā)送某個(gè)鍵到當(dāng)前焦點(diǎn)的元素
send_keys_to_element(element, *keys_to_send)? # 發(fā)送某個(gè)鍵到指定元素
登錄后拿cookie實(shí)例:
% driver.get('https://www.csdn.com/')
% print("登錄前:")
% for cookie in driver.get_cookies():
%? ? ? ? print(cookie)
% loginC =??driver.find_element_by_css_selector('#login_area')
% enter =??loginC.find_element_by_link_text('登錄')register.click()
#等待20秒峭状,手動(dòng)輸入賬號(hào)密碼克滴,登錄逼争。記得勾選下次自動(dòng)登錄,就怕頁(yè)面有檢測(cè)機(jī)制
% time.sleep(25)
% print("登錄后: ")?
% for cookie01 in driver.get_cookies():
%? ? ? ?print(cookie01)
% driver.quit()
判斷元素是否顯示
element.isDisplay();
獲取元素屬性
element.getAttribute()? #得到元素的屬性值????
輸入框操作
element.sendKeys(“test”)? # 在輸入框中輸入內(nèi)容test:
element.clear()? # /將輸入框清空
element.getText() # 獲取輸入框的文本內(nèi)容:?
下拉選擇框
select.selectByVisibleText(“A”);
select.selectByValue(“1”);?
select.deselectAll();
select.deselectByValue(“1”);
select.deselectByVisibleText(“A”);
select.getAllSelectedOptions();
select.getFirstSelectedOption();?
單選框
radio.click()? # 選擇某個(gè)單選項(xiàng)
radio.clear()? #清空某個(gè)單選項(xiàng)
radio.isSelected() #/判斷某個(gè)單選項(xiàng)是否已經(jīng)被選擇
多選框
checkbox.click();
checkbox.clear();
checkbox.isSelected()? #判斷多選框是否被選擇
checkbox.isEnabled()? #判斷多選框是否可用
按鈕
button.click()? #點(diǎn)擊按鈕
button.isEnabled ()? #判斷按鈕是否可用
Alert對(duì)話框
alert.accept() #點(diǎn)擊確定
alert.dismiss() #點(diǎn)擊取消
alert.getText() #獲取Alert對(duì)話框的文本
表單
approve.click()?
approve.submit()? #只適合于表單的提交
超時(shí)設(shè)置?
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS) #識(shí)別元素時(shí)的超時(shí)時(shí)間
driver.manage().timeouts().pageLoadTimeout(10,TimeUnit.SECONDS) #頁(yè)面加載時(shí)的超時(shí)時(shí)間
driver.manage().timeouts().setScriptTimeout(10,TimeUnit.SECONDS) ? #異步腳本的超時(shí)時(shí)間
截屏
File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE)