今天我們講講switch_to家中的一個異類:switch_to.active_element猾浦,當然,我們先普及一下其他的家族成員魄揉。
1.switch_to
selenium做自動化的過程中剪侮,經(jīng)常會遇到alert、frame和新的window洛退,這是經(jīng)常是switch_to家族大展拳腳的時候瓣俯,先看看switch_to家族的成員:
? ??alert?——返回瀏覽器的Alert對象,可對瀏覽器alert兵怯、confirm彩匕、prompt框操作
? ??default_content() ——切到主文檔
? ??frame(frame_reference) ——切到某個frame
? ??parent_frame() ——切到父frame,這個方法也不常被人所知媒区,但有多層frame的時候很有用驼仪,不過這里要提一句,一般這種嵌套多層的 ? ? ?frame都是有問題的袜漩,會影響到性能绪爸,可以提給開發(fā),讓其改進?
? ??window(window_name) ——切到某個瀏覽器窗口?
? ??active_element?——返回當前焦點的WebElement對象
2.switch_to.active_element
switch_to.active_element返回的是當前焦點的對象宙攻,即返回WebElement對象奠货。
那么焦點是什么?大概可以這樣理解:即網(wǎng)頁上當前操作的對象(也就是你網(wǎng)頁上光標的位置)粘优,比如仇味,你鼠標點擊到了一個input框,你可以在這個input框里輸入信息雹顺,這時這個input框即焦點丹墨。
說了半天,到底什么時候會需要返回當前的焦點呢嬉愧?下面這個例子可以更直觀一些:
? ??一個網(wǎng)頁上的新建文件夾的功能贩挣,右鍵-新建之后,在頁面上有個輸入文件夾名的input框,但這個框一旦失去焦點而且沒有內(nèi)容的話王财,就會消失卵迂、取消掉新建文件夾的操作。如圖:
這種情況只能用:
driver.find_element_by_class_name('fnew').click();
driver.switch_to.active_element.send_keys('filename');
結(jié)果:成功添加上了新的文件夾绒净!
注:active_element后面沒有括號见咒。