Selenium2+python自動化-視窗多標籤處理方法總結(轉載)

來源:互聯網
上載者:User

標籤:href   current   Python自動化   介紹   logs   百度   nts   rip   遇到   

本篇轉自部落格:上海-小T

原文地址:https://i.cnblogs.com/EditArticles.aspx?opt=1

我們在用Selenium遇到多個瀏覽器視窗或單個瀏覽器多個標籤(Tab)的狀況時,往往都不太好處理,這裡將介紹兩種處理方法。

本文所引用的例子是百度,在百度首頁下方有一個“把百度設為首頁”的超連結,點擊它會另起一個新標籤頁,是一個不錯的例子: 

 

1、switch_to.window()

該方法是Webdriver中內建的一個方法,除了在多個瀏覽器中作切換用,單個瀏覽器多個標籤(Tab)之間的切換也可以用這個方法,思路就是先取得所有標籤的控制代碼,然後迴圈遍曆並判斷是否是當前標籤頁,如果不是則切換。詳細代碼如下:

# encoding:utf-8

 

from selenium import webdriver

 

driver = webdriver.Firefox()

driver.get("http://www.baidu.com")

driver.find_element_by_id("setf").click()

handles = driver.window_handles

for handle in handles:

    if driver.current_window_handle != handle:

        driver.switch_to.window(handle)

driver.find_element_by_link_text("百度首頁").click()

最後一句點擊新標籤上的“百度首頁”連結操作成功即代表已成功切換標籤。

2、利用JS清除target值

用F12工具查看該超連結,可以查看到有一個target屬性:



target=_blank意思是在新視窗中開啟被連結文檔(引自w3school),通俗點解釋就是超連結會用過新視窗(新標籤)開啟,那麼將其值清除 便可實現點擊該超連結後不會另起一個新標籤頁。利用Document 對象方法尋找該id然後將其target的值清除:

js = ‘document.getElementById("setf").target="";‘

JS寫完之後執行它,即可達到效果。完整代碼如下:

# encoding:utf-8

 

from selenium import webdriver

 

driver = webdriver.Firefox()

driver.get("http://www.baidu.com")

js = ‘document.getElementById("setf").target="";‘

driver.execute_script(js)

driver.find_element_by_id("setf").click()

driver.find_element_by_link_text("百度首頁").click()

最後一句點擊新標籤上的“百度首頁”連結操作成功即代表已成功切換標籤。

HTML DOM 定義了多種尋找元素的方法,除了 getElementById() 之外,還有 getElementsByName() 和 getElementsByTagName(),在http://www.w3school.com.cn/jsref/dom_obj_document.asp上有詳細的用法。

Selenium2+python自動化-視窗多標籤處理方法總結(轉載)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.