首页 文章

Selenium无法打开新的Window / Tab

提问于
浏览
0

我目前正在尝试使用selenium抓取网站 . 我有一个包含元素的表,我想点击每个元素,在新窗口/选项卡中打开链接,处理此窗口/选项卡,关闭它并单击下一个元素等 . 到目前为止,我可以单击元素表,打开链接并处理页面 . 不幸的是我无法在新窗口或标签中打开链接 .

我无法向元素发送键盘命令 . 我也试过了

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

这不知何故只打开当前窗口中的链接(我没有得到一个新的窗口句柄,仍然只有一个) . 我会非常感谢任何帮助 .

编辑:此外,我无法使用浏览器手动在新窗口/选项卡中打开链接 .

1 回答

  • 0

    要访问该网址,例如 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

相关问题