如何打开嵌入在webelement中的链接,在主选项卡中,在同一窗口的新选项卡中,使用控件+seleniumwebdriver的单击

nr9pn0ug  于 2021-06-26  发布在  Java
关注(0)|答案(3)|浏览(602)

在主选项卡的web元素中嵌入了一个链接,我想使用seleniumwebdriver和python在同一窗口的新选项卡中打开该链接。在新选项卡中执行一些任务,然后关闭该选项卡并返回主选项卡。我们将通过右键单击链接,然后选择“在新选项卡中打开”以在新选项卡中打开该链接来手动执行此操作。
我是 selenium 的新手。我用 selenium 和美素来刮网。我只知道如何点击链接。我看了很多帖子,但找不到合适的答案

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'] 在新选项卡中打开

rnmwe5a2

rnmwe5a21#

以下导入:

selenium.webdriver.common.keys import Keys

您必须发送密钥:

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

xkftehaa2#

如果定位器返回正确的 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)

希望这有帮助。

wfauudbj

wfauudbj3#

由于父选项卡的webelement中嵌入了一个链接,要使用selenium和python在同一窗口的新选项卡中打开链接,可以使用以下解决方案:
演示url的工作流 https://www.google.com/ 在父选项卡中打开,然后 open in new tab 功能通过 ActionChains 方法 key_down() , click() 以及 key_up() 方法。
代码块:

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']") 浏览器快照:

您可以在seleniumwebdriver中使用ctrl+click组合打开一个新选项卡,从而找到相关的基于java的解决方案

更新

要将selenium的重点转移到新打开的选项卡上,您可以在OpenWeb的新选项卡selenium+python中找到详细的讨论

相关问题