2011-05-17 51 views
13

我希望能夠在Selenium 2的新選項卡中打開鏈接。另外,我想在完成與頁面的交互後關閉選項卡。如果我有標籤的WebElement,這怎麼可能?Selenium 2:在新選項卡中打開鏈接並關閉標籤

我使用硒2 Firefox的驅動程序的Java API中,在Firefox 4

+0

我想到了一個使用JavaScript的解決方案。也許這是最簡單的方法? – Alp 2011-05-17 16:25:26

+1

你會分享這個解決方案嗎?我有同樣的問題。 – 2011-09-17 01:06:15

+0

我沒有找到解決方案。看起來沒有辦法做到這一點,另見公認的答案。 – Alp 2011-09-17 09:01:04

回答

6

運行目前,硒的webdriver API沒有處理選項卡的任何方式。該項目真的需要一個統一的,跨瀏覽器的管理選項卡的方法,然後才能在Java之類的語言綁定之一中看到實現。在此之前,您的JavaScript解決方案可能是唯一的方法,並且請記住,您的代碼將負責管理該選項卡的生命週期。

+0

我擔心這會是答案。謝謝。 – Alp 2011-05-17 21:07:28

7

我想出硒2,Chrome和Firefox的做工精細的方式,IE瀏覽器有安全檢查問題:

Set<String> winSet = webDriver.getWindowHandles(); 
List<String> winList = new ArrayList<String>(winSet); 
String newTab = winList.get(winList.size() - 1); 
webDriver.close(); // close the original tab 
webDriver.switchTo().window(newTab); // switch to new tab 
+2

據我瞭解,這種方法只允許處理'windows',而不是'tabs' – Alp 2012-04-24 23:25:00

6

使用硒處於最佳狀態,我們在溶膠 - 邏輯與java.awt中結合起來.robot類。您可以發送可以關閉瀏覽器窗口的密鑰。嘗試使用

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_CONTROL); 
robot.keyPress(KeyEvent.VK_W); 

,如果它的工作原理

3

下面是它使用Python我怎麼沒回復。

該解決方案有點髒,但如果要關閉選項卡,則該解決方案可以工作。

我模仿mac快捷鍵CMD + W關閉一個標籤,如果你正在運行windows,你可能需要實現一個不同的組合鍵。

import from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.action_chains import ActionChains 
from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("http://www.amazon.com/gp/search/ref=sr_in_-2_p_lbr_brands_browse-_2895?rh=n%3A172282%2Cn%3A!493964%2Cn%3A502394%2Cp_lbr_brands_browse-bin%3ALytro") 
action_chains = ActionChains(driver) 
action_chains.key_down(Keys.COMMAND + "w") 
action_chains.perform() 
action_chains.key_up(Keys.COMMAND + "w") 
driver.implicitly_wait(5) 
3

我使用的是Robor類。

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_CONTROL); 
robot.keyPress(KeyEvent.VK_W); 
robot.keyRelease(KeyEvent.VK_CONTROL); 
robot.keyRelease(KeyEvent.VK_W); 

這使機器人快速按下並釋放CTRL + W鍵來模擬用戶交互。如果您只使用keyPress事件,則會關閉WebDriver的所有選項卡和窗口。

希望我幫你。

4

花了一段時間(〜2周)讓我追蹤正確的命令序列,但這是迄今爲止我發現的一種Win7/Chrome設置最簡單的方法,可以在新選項卡AND開關中打開鏈接自動添加到新標籤。

警告!確保始終執行keyUp操作。如果你無法執行keyUp,你的系統將會保持這些鍵被按下,直到重新啓動或鍵盤輸入發生。

的Windows 7 /鉻:

WebElement elem = driver.findElement(By.linkText("MyLinkText")); 

// Chrome key combos: 
// SHIFT + CTRL + click = Open in new tab (and switch to new tab) 
// SHIFT + CTRL + RETURN = Open in new tab (in background) 
Actions act = new Actions(driver); 
act.keyDown(Keys.LEFT_CONTROL).keyDown(Keys.LEFT_SHIFT).perform(); 

// Wrap in a try/catch during implementation to ensure you perform keyUp(s). 
elem.click(); 

act.keyUp(Keys.LEFT_CONTROL).keyDown(Keys.LEFT_SHIFT).perform(); 

注:我知道這是一個古老的線程,我只是想在這裏編目解決方案,因爲我無法找到一個更好的解決方案,並希望拯救別人一一點時間(希望:)。

編輯:錯字

+0

謝謝,這是一個很好的方法 – Alp 2015-01-12 22:17:37

+0

希望我能夠專門幫助w/FF,但不幸的是我們使用Chrome作爲我們的主要測試瀏覽器。然而,相同的通用技術應該適用於他人和他們各自的關鍵組合。 – TwoByteHero 2015-01-14 20:51:47

+0

酷東西!謝謝! – 2016-10-05 02:14:04

相關問題