Мне нужно открыть ссылку в новой вкладке, используя Selenium.
Так можно ли выполнить ctrl + щелчок по элементу в Selenium, чтобы открыть его на новой вкладке?
Мне нужно открыть ссылку в новой вкладке, используя Selenium.
Так можно ли выполнить ctrl + щелчок по элементу в Selenium, чтобы открыть его на новой вкладке?
Используйте 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()
Два возможных решения:
открытие новой вкладки
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
Ниже я пытаюсь использовать 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);
Вы можете отслеживать имена окон, которые помогут вам легко перемещаться между вкладками.
Импортируя класс ключей, мы можем открыть страницу в новой вкладке или в новом окне с помощью 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)
Следующее работает для меня, чтобы открыть ссылку на новой вкладке:
String link = Keys.chord(Keys.CONTROL,Keys.ENTER);
driver.findElement(By.linkText("yourlinktext")).sendKeys(link);
Выше код находится в java. вы можете легко конвертировать в python.
Спросите, есть ли у вас запрос.