当前位置: 首页 > 面试题库 >

如何使用Control +单击Selenium Webdriver打开嵌入在web元素中的链接,该链接位于主选项卡,同一窗口的新选项卡中

梅欣然
2023-03-14
问题内容

在主选项卡的Web元素中嵌入了一个链接,我想使用SeleniumWebdriver和python在同一窗口的新选项卡中打开该链接。在新标签页中执行一些任务,然后关闭该标签页并返回主标签页。我们将手动执行此操作,方法是右键单击链接,然后选择“在新选项卡中打开”以在新选项卡中打开该链接。

我刚接触硒。我正在使用Selenium和BeautifulSoup进行网络抓取。我只知道如何点击链接。我已经阅读了很多帖子,但是找不到正确的答案

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

I expect the link in div[data-res-position = '1'] to open in a new tab


问题答案:

由于在“ 父选项卡”的web元素中嵌入了一个链接,要使用Selenium和Python在同一窗口的“ 新选项卡”中
打开该链接,您可以使用以下 解决方案:

为了证明该URL的工作流程https://www.google.com/在打开
的父选项卡,然后open in new tabfunctionalty实现
通过ActionChains方法key_down(),click()和key_up()
方法。

  • Code Block:
        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()
  • Note : You need to replace (By.LINK_TEXT, "Gmail") with your desired locator e.g. ("div[data-res-position = '1']")

  • Browser Snapshot:

tab_actions

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

更新资料

要将Selenium的重点转移到新打开的选项卡上,可以在Selenium + Python的新选项卡的Open web中找到详细的讨论。



 类似资料:
  • 问题内容: 在这种情况下有人可以帮助我吗: 方案是: 有一个网页,并且仅在新选项卡中打开所有指定的链接。现在,我试图单击新打开的选项卡中的任何一个链接。在下面尝试过,但是只单击了主/第一个选项卡中的一个链接,而不是新选项卡中的链接。 问题答案: 您将需要使用命令来访问第二个选项卡。 在打开第二个选项卡之前-获取打开的选项卡的windowHandle: 然后执行打开第二个选项卡的操作。现在,您需要知

  • 问题内容: 这个问题已经在这里有了答案 : Target =’_ blank’以显示在新窗口中,而不是新标签中,可能吗? (9个答案) 5年前关闭。 有没有一种方法可以使链接在不使用JavaScript的情况下打开新的浏览器窗口(而非标签页)? 问题答案: 使用纯HTML 不能影响这一点-每个现代的浏览器(=用户)都可以完全控制此行为,因为它过去曾被滥用很多。 HTML选项 您可以打开一个新窗口(

  • 我看过很多答案 Selenium IDE:在新选项卡中打开并将焦点转移到新选项卡不工作 如何在新选项卡中打开链接等...关于这个问题的帖子,但没有一个是100%相关的,所以,我再次问这个。我需要在三个不同的选项卡中打开三个不同的链接:

  • 问题内容: 新标签页正在打开,但URL链接未打开。 问题答案: 我检查了以下代码,它对我来说很好。我从这里找到了答案。

  • 请告知如何使用Python selenium Chrome WebDriver在新选项卡中打开链接。所以,我不是在问如何简单地打开一个新标签,也不是在问如何用Firefox打开一个新标签。 此选项卡将在新选项卡中打开相同的页面: 因此,当试图通过Selenium或requests访问此元素的链接时,它将重定向到搜索结果本身的页面。有鉴于此,我决定用一种不同的方法来解决这个问题。 因此,我决定放弃在