wake-up-neo.com

Senden Sie die Tastenkontrolle + Klick in Selenium mit Python-Bindungen

Ich muss den Link in einem neuen Tab mit Selenium öffnen.

Ist es also möglich, Strg + Klick auf ein Element in Selenium auszuführen, um es in einem neuen Tab zu öffnen?

13
micgeronimo

Verwenden Sie eine ActionChain mit key_down, um die Steuertaste zu drücken, und key_up, um sie freizugeben:

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()
24
Louis

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') 

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

einen neuen webdriver öffnen

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

Durch den Import von Keys Class können wir mit CONTROL oder SHIFT eine Seite in einem neuen Tab oder einem neuen Fenster öffnen und die folgenden Tasten eingeben: driver.find_element_by_xpath('//input[@name="login"]').send_keys(Keys.CONTROL,Keys.ENTER)

oder

driver.find_element_by_xpath('//input[@name="login"]').send_keys(Keys.SHIFT,Keys.ENTER)

0
Satheesh Kumar

Folgendes habe ich für Selenium WebDriver mit Java-Bindung versucht und es funktioniert für mich ... Wenn Sie den Link manuell in einem neuen Tab öffnen möchten, können Sie dies durch Ausführen von Kontext ausführen ' Möglichkeit. Nachfolgend finden Sie die Implementierung in Selenium-Web-Treiber mit Java-Bindung.

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

Der Web-Treiber behandelt die neue Registerkarte genauso wie die des neuen Fensters. Sie müssen nach dem Fensternamen zu einer neuen geöffneten Registerkarte wechseln.

driver.switchTo().window(windowName);

Sie können die Fensternamen nachverfolgen, so dass Sie problemlos zwischen Registerkarten navigieren können.

0
Rupesh Shinde