Selenium2+python自動化29-js處理多視窗

來源:互聯網
上載者:User

標籤:編輯   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處理多視窗

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.