標籤:編輯 odi text png port user 手動 utf-8 www.
前言
在開啟頁面上連結的時候,經常會彈出另外一個視窗(多視窗情況前面這篇有講解:Selenium2+python自動化13-多視窗、控制代碼(handle)),這樣在多個視窗之間來回切換比較複雜,那麼有沒有辦法讓新開啟的連結在一個視窗開啟呢?
要解決這個問題,得從html源碼上找到原因,然後修改元素屬性才能解決。很顯然js在這方面是萬能的,於是本篇得依靠萬能的js大哥了。
一、多視窗情況
1.在打baidu的網站連結時,會重新開啟一個視窗
(注意:我的百度頁面是已登入狀態,沒登入時候是不會重新開啟視窗的)
二、查看元素屬性:target="_blank"
1.查看元素屬性,會發現這些連結有個共同屬性:target="_blank"
三、去掉target="_blank"屬性
1.因為此連結元素target="_blank",所以開啟連結的時候會重新開啟一個標籤頁,那麼解決這個問題,去掉該屬性就可以了。
2.為了驗證這個問題,可以切換到html編輯介面,手動去掉“_blank”屬性
3.刪除“_blank”屬性後,重新開啟連結,這時候會發現開啟的新連結會在原標籤頁開啟。
四、js去掉target="_blank"屬性
1.第一步為了先登入,我這裡載入設定檔免登入了(不會的看這篇:Selenium2+python自動化18-載入Firefox配置)
2.這裡用到js的定位方法,定位該元素的class屬性
3.定位到該元素後直接修改target屬性值為空白
五、參考代碼
# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# 載入設定檔免登入
profileDir = r‘C:\Users\Gloria\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default‘
profile = webdriver.FirefoxProfile(profileDir)
driver = webdriver.Firefox(profile)
driver.get("https://www.baidu.com/")
# 修改元素的target屬性
js = ‘document.getElementsByClassName("mnav")[0].target="";‘
driver.execute_script(js)
driver.find_element_by_link_text("糯米").click()
注意:並不是所有的連結都適用於本方法,本篇只適用於有這個target="_blank"屬性連結情況
本篇僅提供解決問題的辦法和思路,不要完全照搬代碼!!!
Selenium2+python自動化29-js處理多視窗