使用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 崩溃的选项卡中确定加载状态