2015-01-05 22 views

risposta

11

Utilizzare un ActionChain con key_down per premere il tasto di controllo, e key_up per rilasciarlo:

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

Di seguito è quello che ho provato per Selenium WebDriver con associazione Java e il suo lavoro per me. Se si desidera aprire manualmente il collegamento in una nuova scheda, è possibile ottenere ciò facendo clic sul collegamento e selezionando l'opzione "Apri in una nuova scheda". Di seguito è riportata l'implementazione nel driver Web Selenium con associazione Java.

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

Il driver Web gestisce la nuova scheda allo stesso modo di quella della nuova finestra. Dovrai passare alla nuova scheda aperta tramite il nome della sua finestra.

driver.switchTo().window(windowName); 

È possibile tenere traccia dei nomi di finestre che consentono di navigare facilmente tra le schede.

6

Due possibili soluzioni:

aprendo una nuova scheda

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

questa è la soluzione per MAC OSX. In altri casi è possibile utilizzare il Keys.CONTROL + 't' di serie

l'apertura di una nuova WebDriver

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

Seguendo sta lavorando per me di aprire il collegamento in una nuova scheda:

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

Sopra il codice è in java. posso facilmente convertire in python.

Si prega di chiedere se avete qualche domanda.

Problemi correlati