python3使用selenium下篇

接上篇

頁面操作方法

1. 多frame(框架)切換
在Web應用中經(jīng)常會遇到frame/iframe嵌套頁面的應用翔冀,WebDriver只能在一個頁面上對元素識別與定位,對于frame/iframe內(nèi)嵌頁面上的元素無法直接定位,這時就通過switch_to.frame()方法將當前定位的主體切換為frame/iframe的內(nèi)嵌頁面中贿肩。

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('test_frame.html')
# 切換到frame(id="if")的框架
driver.switch_to.frame("if")
# 下面就可以正常的操作里面的元素了
driver.find_element_by_id("kw").send_keys("selenium")

# 如果沒有id和name的情況
fr = driver.find_element_by_xpath('//*[@class="if"]')
driver.switch_to.frame(fr)
# 下面就可以正常的操作里面的元素了
driver.find_element_by_id("kw").send_keys("selenium")

switch_to.frame()可以直接取frame的id或name涉瘾,如果沒有id和name可以先通過xpath定位到iframe,再將定位對象傳給switch_to.frame()方法,或者driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
如果完成了在當前frame上的操作,則可以通過switch_to.parent_content()方法跳出當前一級表單折欠,該方法默認對應與離它最近的switch_to.frame()方法,除此之外吼过,在進入多級表單的情況下锐秦,還可以通過switch_to.default_content()跳回最外層的頁面。
2. 多窗口切換
在頁面操作過程中有時候點擊某個鏈接會彈出新的窗口盗忱,這時候就需要主機切換到新打開的窗口上進行操作酱床。
操作方法:

  • 獲得當前窗口的句柄
    sreach_windows = driver.current_window_handle
  • 獲得當前所有打開的窗口句柄
    all_handles=driver.window_handles
  • 切換到相應的窗口
    switch_to.window()
from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://www.baidu.com')

# 獲得當前窗口的句柄
sreach_windows = driver.current_window_handle
driver.find_element_by_link_text("地圖")
# 獲得當前所有打開的窗口句柄
all_handles=driver.window_handles
# 切換到地圖窗口
for handle in all_handles:
    if handle != sreach_windows:
        driver.switch_to.window(handle)
         操作元素.....
# 切換到原來窗口
or handle in all_handles:
    if handle == sreach_windows:
        driver.switch_to.window(handle)

3. 警告處理
在頁面操作中有時會遇到JavaScript所生成的alert、confirm以及prompt彈框售淡,可以使用switch_to_alert()方法定位到斤葱。然后使用text/accept/dismiss/send_keys等方法進行操作。

  • switch_to_alert():獲取當前頁面上的警告框(老版)揖闸。
  • switch_to.alert():獲取當前頁面上的警告框(新版)揍堕。
  • text:返回alert/confirm/prompt 中的文字信息。
  • accept():接受現(xiàn)有警告框汤纸。
  • dismiss():解散現(xiàn)有警告框衩茸。
  • send_keys(keysToSend):發(fā)送文本至警告框。keysToSend:將文本發(fā)送至警告框贮泞。

4. 操作Cookie
WebDriver操作cookie的方法

  • get_cookies():獲得所有cookie信息楞慈。
  • get_cookie(name):添加字典的key為"name"的cookie的信息幔烛。
  • add_cookie(cookie_dict):添加cookie。"cookie_dict'指字典對象囊蓝,必須有name和value值饿悬。
  • delete_cookie(name, optionsString):刪除cookie信息。"name"是要刪除的cookie的名稱聚霜,"optionsString"是該cookie的選項狡恬,目前支持的選項包括"路徑","域"。
  • delete_all_cookies():刪除所有cookie信息蝎宇。

5. 調(diào)用JavaScript代碼
WebDriver提供了execute_script()方法來執(zhí)行javaSrcipt代碼弟劲。

js = "要執(zhí)行的js代碼"
driver.execute_script(js)

6. 窗口截圖
WebDriver提供了截圖函數(shù)get_screenshot_as_file()來截取當前窗口。
driver.get_screenshot_as_file("保存的路徑')

7. 判斷元素是否存在

from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")


def is_element_exist(css):
    try:
        driver.find_element_by_css_selector(css)
        return True
    except:
        return False
print(is_element_exist('#kw'))

# 判斷頁面上有無id為kw的元素
if is_element_exist("#kw"):
    driver.find_element_by_id("kw").send_keys("selenium")
# 判斷頁面有無標簽為input元素
if is_element_exist("input"):
    driver.find_element_by_tag_name("input").send_keys("selenium")
# 判斷頁面有無id為xxx的元素
if is_element_exist("xxx"):
    driver.find_element_by_id("xxx").send_keys("selenium")

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姥芥,一起剝皮案震驚了整個濱河市兔乞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凉唐,老刑警劉巖庸追,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異台囱,居然都是意外死亡锚国,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門玄坦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绘沉,你說我怎么就攤上這事煎楣。” “怎么了车伞?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵择懂,是天一觀的道長。 經(jīng)常有香客問我另玖,道長困曙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任谦去,我火速辦了婚禮慷丽,結果婚禮上,老公的妹妹穿的比我還像新娘鳄哭。我一直安慰自己要糊,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布妆丘。 她就那樣靜靜地躺著锄俄,像睡著了一般局劲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奶赠,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天鱼填,我揣著相機與錄音,去河邊找鬼毅戈。 笑死苹丸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的竹祷。 我是一名探鬼主播谈跛,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼塑陵!你這毒婦竟也來了感憾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤令花,失蹤者是張志新(化名)和其女友劉穎阻桅,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兼都,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡嫂沉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扮碧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趟章。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖慎王,靈堂內(nèi)的尸體忽然破棺而出蚓土,到底是詐尸還是另有隱情,我是刑警寧澤赖淤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布蜀漆,位于F島的核電站,受9級特大地震影響咱旱,放射性物質(zhì)發(fā)生泄漏确丢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一吐限、第九天 我趴在偏房一處隱蔽的房頂上張望鲜侥。 院中可真熱鬧,春花似錦诸典、人聲如沸剃毒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赘阀。三九已至益缠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間基公,已是汗流浹背幅慌。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留轰豆,地道東北人胰伍。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像酸休,于是被迫代替她去往敵國和親骂租。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 你在做夢嗎斑司? 阿里巴巴上市的時候馬云說了句渗饮,人是要有夢想的,萬一實現(xiàn)了呢宿刮!是啊互站,夢想一開始就是個夢。 最近見的人略...
    米艷斌閱讀 223評論 0 3
  • 7 《士兵突擊》第七集中僵缺,被天上掉下的餡餅給砸暈了的許三多雖然舍不得離開五班胡桃,但還是被好心的班長和戰(zhàn)友押送到了團部...
    筱昀閱讀 1,129評論 5 12
  • Every day at this time, will stop to think about what to ...
    伏晶之心閱讀 167評論 0 0