Selenium не может открыть новое окно / вкладку - PullRequest
0 голосов
/ 21 мая 2018

В настоящее время я пытаюсь сканировать веб-сайт с использованием селена.У меня есть таблица с элементами, и я хочу щелкнуть по каждому элементу, открыть ссылку в новом окне / вкладке, обработать это окно / вкладку, закрыть ее и щелкнуть по следующему элементу и т. Д. Пока я могу нажимать на элементытаблицы, откройте ссылку и обработайте страницу.К сожалению, я не могу открыть ссылку в новом окне или вкладке.

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

action = ActionChains(self.driver)
    action.move_to_element(ele)\
    .key_down(Keys.SHIFT)\
    .click(ele)\
    .key_up(Keys.SHIFT)\
    .perform()

Это как-то только открывает ссылку в текущем окне (я не получаю новый дескриптор окна, все еще только один).Я был бы очень признателен за любую помощь.

Редактировать: Также я не могу открыть ссылку в новом окне / вкладке вручную с помощью браузера.

1 Ответ

0 голосов
/ 22 мая 2018

Чтобы получить доступ к URL, например, https://www.google.co.in, затем нажать на элемент, например ссылку с текстом как Gmail , чтобы открыть ссылку в новом окне / вкладке, которую вы можете использовать action_chains Класс в соответствии с решением ниже:

  • Блок кода:

    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.common.keys import Keys
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument('disable-infobars')
    driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get('https://www.google.co.in')
    print("Page Title is : %s" %driver.title)
    mail_link = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Gmail")))
    ActionChains(driver).key_down(Keys.CONTROL).click(mail_link).key_up(Keys.CONTROL).perform() 
    
  • Снимок браузера:

Google_Gmail

...