2015-01-05 4 views

Antwort

11

Verwenden Sie ein ActionChain mit key_down die Strg-Taste zu drücken, und key_up um sie zu lösen:

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

Unten ist, was ich für Selenium WebDriver mit Java Binding versucht habe und es funktioniert für mich. Wenn Sie die Verknüpfung in neuer Registerkarte manuell öffnen möchten, können Sie dies durch Ausführen von Kontext erreichen. Klicken Sie auf den Link und wählen Sie die Option "In neuer Registerkarte öffnen". Unten ist die Implementierung in Selenium Web-Treiber mit Java Binding.

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(); 

Web-Treiber behandelt neue Registerkarte in der gleichen Weise wie das neue Fenster. Sie müssen zu einem neuen geöffneten Tab durch seinen Fensternamen wechseln.

Sie können Fensternamen verfolgen, die Ihnen helfen, zwischen Tabs zu navigieren.

6

Zwei mögliche Lösungen:

einen neuen Tab öffnen

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

das ist die Lösung für MAC OSX. In anderen Fällen können Sie die Standard Keys.CONTROL + 't' verwenden

ein neues WebDriver

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

Im Anschluss arbeitet für mich Link in einem neuen Tab zu öffnen öffnen:

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

Der obige Code ist in Java. Sie können leicht zu Python konvertieren, nehme ich an.

Bitte fragen Sie, wenn Sie Fragen haben.