如何在主选项卡中打开嵌入在网络元素中的 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,打开link 在 New 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 的焦点转移到新打开的选项卡,您可以在
中找到详细讨论
在主选项卡的网络元素中嵌入了一个 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,打开link 在 New Tab 在同一个 window 中使用
To demonstrate the workflow the url
https://www.google.com/
was opened in the Parent Tab and thenopen in new tab
functionalty is implemented throughActionChains
methodskey_down()
,click()
andkey_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 的焦点转移到新打开的选项卡,您可以在