Selenium控制已打开的IE浏览器


控制已打开IE浏览器窗口的方法很难找,这里给出一个方案。

1、重写Remote

ReuseIe.py

from selenium.webdriver import Remote
from selenium.webdriver.ie import options
from selenium.common.exceptions import InvalidArgumentException
class ReuseIe(Remote):	
	def __init__(self,command_executor,session_id):
		self.r_session_id=session_id
		Remote.__init__(self, command_executor=command_executor,desired_capabilities={
    
    })
		
	def start_session(self, desired_capabilities, browser_profile=None):		
		capabilities = {
    
    'desiredCapabilities':{
    
    }, 'requiredCapabilities':{
    
    }}
		for k, v in desired_capabilities.items():
			if k not in ('desiredCapabilities', 'requiredCapabilities'):
				capabilities['desiredCapabilities'][k] = v
			else:
				capabilities[k].update(v)
		if browser_profile:
			capabilities['desiredCapabilities']['firefox_profile'] = browser_profile.encoded			

		self.session_id =self.r_session_id
		self.capabilities = options.Options().to_capabilities()       
		self.w3c = False

2、创建Session

先运行此程序打开IE浏览器,保存浏览器的Session等相关信息。

CreateSession.py

from selenium import webdriver
import sys
sys.path.append("..")
from ReuseIe import *
import configparser

driver=webdriver.Ie()
url=driver.command_executor._url
session_id=driver.session_id
print(driver.session_id)
print(driver.command_executor._url)

config=configparser.ConfigParser()
config.add_section("IE")
config.set("IE","url",url)
config.set("IE","session_id",session_id)

with open("session.ini","w+") as f:
	config.write(f)
f.close()	


3、控制已打开的IE浏览器窗口

根据第2步保存的Session,接管已打开的IE浏览器。

from selenium import webdriver
import sys
sys.path.append("..")
from ReuseIe import *
import configparser
config=configparser.ConfigParser()
config.read("session.ini",encoding="utf-8")
url=config.get("IE","url")
session_id=config.get("IE","session_id")
print(session_id)
print(url)

driver=ReuseIe(url,session_id)
driver.get("https://www.baidu.com")

猜你喜欢

转载自blog.csdn.net/chuhe163/article/details/108422628
今日推荐