Devo aprire il collegamento in una nuova scheda utilizzando Selenium.Tasti di invio controllo + clic in selenio con collegamenti Python
Quindi è possibile eseguire ctrl + clic sull'elemento in selenio per aprirlo in una nuova scheda?
Devo aprire il collegamento in una nuova scheda utilizzando Selenium.Tasti di invio controllo + clic in selenio con collegamenti Python
Quindi è possibile eseguire ctrl + clic sull'elemento in selenio per aprirlo in una nuova scheda?
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()
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.
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
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.
[Questo post] (http://stackoverflow.com/a/13615802/1982962) può aiutare. –