Управление ключами отправки + щелчок в Selenium с привязками Python

Мне нужно открыть ссылку в новой вкладке, используя Selenium.

Так можно ли выполнить ctrl + щелчок по элементу в Selenium, чтобы открыть его на новой вкладке?

Ответ 1

Используйте ActionChain с key_down, чтобы нажать клавишу управления, и key_up, чтобы отпустить его:

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

Ответ 2

Два возможных решения:

открытие новой вкладки

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

это решение для MAC OSX. В других случаях вы можете использовать стандартный Keys.CONTROL + 't'

открытие нового webdriver

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

Ответ 3

Ниже я пытаюсь использовать Selenium WebDriver с привязкой Java и его работой для меня. Если вы хотите вручную открыть ссылку в новой вкладке, вы можете добиться этого, выполнив контекст. Нажмите ссылку и выберите "Открыть в новой вкладке". Ниже приведена реализация веб-драйвера Selenium с привязкой 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();

Web-драйвер обрабатывает новую вкладку так же, как и в новом окне. Вам нужно будет перейти на новую открытую вкладку по имени своего окна.

driver.switchTo().window(windowName);

Вы можете отслеживать имена окон, которые помогут вам легко перемещаться между вкладками.

Ответ 4

Импортируя класс ключей, мы можем открыть страницу в новой вкладке или в новом окне с помощью CONTROL или SHIFT и driver.find_element_by_xpath('//input[@name="login"]').send_keys(Keys.CONTROL,Keys.ENTER) следующие ключи: driver.find_element_by_xpath('//input[@name="login"]').send_keys(Keys.CONTROL,Keys.ENTER)

или же

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

Ответ 5

Следующее работает для меня, чтобы открыть ссылку на новой вкладке:

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

Выше код находится в java. вы можете легко конвертировать в python.

Спросите, есть ли у вас запрос.