如何在主选项卡中打开嵌入在网络元素中的 link,在相同 window 的新选项卡中使用 Control + 单击 Selenium Webdriver

How to open a link embeded in a webelement with in the main tab, in a new tab of the same window using Control + Click of Selenium Webdriver

在主选项卡的网络元素中嵌入了一个 link,我想在同一个 window 的新选项卡中使用 Selenium Webdriver 和 python。 在新选项卡中执行一些任务,然后关闭该选项卡并 return 返回主选项卡。 我们将通过右键单击 link 然后 select "open in new tab" 在新选项卡中打开 link 来手动执行此操作。

我是 Selenium 的新手。我正在使用 Selenium 和 BeautifulSoup 进行网络抓取。我只知道点击一个link。我已经阅读了很多帖子,但找不到合适的答案

url = "https://www.website.com"
path = r'path_to_chrome_driver'
drive = webdriver.Chrome(path)
drive.implicitly_wait(30)
drive.get(url)
source = drie.page_source

py_button = driver.find_element_by_css_selector("div[data-res-position = '1']")
py_button.click()

我希望 div[data-res-position = '1'] 中的 link 在新标签页中打开

以下导入:

selenium.webdriver.common.keys import Keys

您必须发送密钥:

py_button.send_keys(Keys.CONTROL + 't')

如果您的定位器 return 正确 href

,则可以实现此技巧

先试试这个:

href = driver.find_element_by_css_selector("div[data-res-position = '1']").get_attribute("href")
print(href)

如果你答对了href,你可以这样做:

#handle current tab
first_tab = driver.window_handles[0]

#open new tab with specific url
driver.execute_script("window.open('" +href +"');")

#hadle new tab
second_tab = driver.window_handles[1]

#switch to second tab
driver.switch_to.window(second_tab)

#switch to first tab
driver.switch_to.window(first_tab)

希望对您有所帮助。

因为在父选项卡的网络元素中嵌入了一个link,打开linkNew Tab 在同一个 window 中使用 Python 你可以使用以下解决方案:

To demonstrate the workflow the url https://www.google.com/ was opened in the Parent Tab and then open in new tab functionalty is implemented through ActionChains methods key_down(), click() and key_up() methods.

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.support.ui 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
    import time
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    driver.get("https://www.google.com/")
    link = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Gmail")))
    ActionChains(driver).key_down(Keys.CONTROL).click(link).key_up(Keys.CONTROL).perform()
    
  • 注意:您需要将 (By.LINK_TEXT, "Gmail") 替换为您想要的定位器,例如("div[data-res-position = '1']")

  • 浏览器快照:

You can find a relevant Java based solution in Opening a new tab using Ctrl + click combination in Selenium Webdriver


更新

要将 Selenium 的焦点转移到新打开的选项卡,您可以在

中找到详细讨论