使用Selenium框架,如何在现有选项卡中执行进程?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Selenium框架,如何在现有选项卡中执行进程?相关的知识,希望对你有一定的参考价值。
任务:在位于同一窗口中的2个不同选项卡中执行2个进程,这些选项卡已打开。
查询:如何在已创建的选项卡中执行进程而不是打开新窗口?
码:
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
import time
from multiprocessing import Process
import sys
driver = webdriver.Chrome()
driver.get("https://www.google.com")
actions = ActionChains(driver)
about = driver.find_element_by_link_text('About')
actions.key_down(Keys.CONTROL).click(about).key_up(Keys.CONTROL).perform()
driver.switch_to.window(driver.window_handles[0])
driver.get("https://stackoverflow.com")
def func1():
while True:
driver.get("https://stackoverflow.com")
time.sleep(1)
driver.get("https://www.google.com")
time.sleep(1)
def func2():
while True:
driver.get("https://en.wikipedia.org/wiki/Main_Page")
time.sleep(1)
driver.get("https://store.google.com/?srp=/product/google_home")
time.sleep(1)
if __name__=='__main__':
driver.switch_to.window(driver.window_handles[0])
p1 = Process(target = func1)
p1.start()
driver.switch_to.window(driver.window_handles[1])
p2 = Process(target = func2)
p2.start()
答案
根据我的研究,我发现你必须拥有以前的“操作系统”知识才能使其发挥作用。这是一个浏览器特定的任务,Selenium团队没有实现。
Github Issue: on running tasks on existing tabs
以上是关于使用Selenium框架,如何在现有选项卡中执行进程?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 selenium 从空选项卡中获取 URL“about:blank”?
如何使用Selenium在页面中的多个子选项卡中传递驱动程序实例?
如何使用 Selenium WebDriver 打开一个新选项卡并启动链接?
如何专注于第二个选项卡并使用 selenium webdriver 处理它
未知错误:由于未知错误导致页面崩溃,会话被删除:无法从 ChromeDriver Selenium 崩溃的选项卡中确定加载状态