2015-01-05 75 views

回答

11

使用與key_down一個ActionChain按下控制鍵,key_up釋放它:

import time 
from selenium import webdriver 
from selenium.webdriver.common.action_chains import ActionChains 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Chrome() 

driver.get('http://google.com') 
element = driver.find_element_by_link_text('About') 

ActionChains(driver) \ 
    .key_down(Keys.CONTROL) \ 
    .click(element) \ 
    .key_up(Keys.CONTROL) \ 
    .perform() 

time.sleep(10) # Pause to allow you to inspect the browser. 

driver.quit() 
0

以下是我爲Selenium WebDriver嘗試使用Java綁定和它爲我工作的原因。 如果您想手動打開新標籤中的鏈接,您可以通過執行上下文點擊鏈接並選擇「在新標籤中打開」選項來實現此目的。下面是使用Java綁定的Selenium網絡驅動程序的實現。

Actions newTab= new Actions(driver); 
WebElement link = driver.findElement(By.xpath("//xpath of the element")); 

//Open the link in new window 
newTab.contextClick(link).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform(); 

網頁驅動程序以與新窗口相同的方式處理新選項卡。您將不得不通過其窗口名稱切換到新的打開選項卡。

driver.switchTo().window(windowName); 

您可以跟蹤窗口名稱,這將幫助您輕鬆地在選項卡之間導航。

6

兩種可能的解決方案:

打開一個新標籤

self.driver = webdriver.Firefox() 
self.driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') 

這是MAC OSX的溶液。在其他情況下,你可以使用標準的Keys.CONTROL + 'T'

打開一個新的webdriver

driver = webdriver.Firefox() #1st window 
second_driver = webdriver.Firefox() #2nd windows 
-2

以下是爲我工作打開新的選項卡鏈接:

String link = Keys.chord(Keys.CONTROL,Keys.ENTER); 
    driver.findElement(By.linkText("yourlinktext")).sendKeys(link); 

上面的代碼是用java編寫的。你可以很容易地轉換爲python我認爲。

請詢問是否有任何疑問。