scraping - Enviar control de teclas+clic en Selenium con enlaces de Python
selenium webdriver python (4)
Dos posibles soluciones:
abriendo una nueva pestaña
self.driver = webdriver.Firefox()
self.driver.find_element_by_tag_name(''body'').send_keys(Keys.COMMAND + ''t'')
esta es la solución para MAC OSX. En otros casos, puede usar las Teclas estándar.CONTROL + ''t''
abriendo un nuevo webdriver
driver = webdriver.Firefox() #1st window
second_driver = webdriver.Firefox() #2nd windows
Necesito abrir el enlace en una nueva pestaña usando Selenium.
Entonces, ¿es posible ejecutar ctrl + clic en el elemento en Selenium para abrirlo en una nueva pestaña?
Lo siguiente es trabajar para que abra el enlace en una nueva pestaña:
String link = Keys.chord(Keys.CONTROL,Keys.ENTER);
driver.findElement(By.linkText("yourlinktext")).sendKeys(link);
El código anterior está en Java. usted puede convertir fácilmente a Python, supongo.
Por favor, pregunte si tiene alguna consulta.
A continuación se muestra lo que he intentado para Selenium WebDriver con enlace de Java y funciona para mí. Si desea abrir manualmente el Enlace en la Nueva Pestaña, puede hacerlo haciendo Contexto Haga clic en el Enlace y seleccione la opción ''Abrir en una pestaña nueva''. A continuación se muestra la implementación en Selenium web-driver con enlace 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();
El controlador web maneja una nueva pestaña de la misma manera que la de una nueva ventana. Tendrá que cambiar a una nueva pestaña abierta por su nombre de ventana.
driver.switchTo().window(windowName);
Puede realizar un seguimiento de los nombres de las ventanas que le ayudarán a navegar fácilmente entre las pestañas.
Use una ActionChain
con key_down
para presionar la tecla de control, y key_up
para liberarla:
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()