Docker Support

This commit is contained in:
Naibo Wang 2024-04-23 21:55:45 +08:00
parent b2a6fd6b6b
commit ad568af5f3
3 changed files with 21 additions and 7 deletions

View File

@ -1721,8 +1721,11 @@ class BrowserThread(Thread):
try:
actions = ActionChains(self.browser) # 实例化一个action对象
if newTab == 1: # 在新标签页打开
# Ctrl + Click
actions.key_down(Keys.CONTROL).click(element).key_up(Keys.CONTROL).perform()
if sys.platform == "darwin": # Mac
actions.key_down(Keys.COMMAND).click(element).key_up(Keys.COMMAND).perform()
else:
# Ctrl + Click
actions.key_down(Keys.CONTROL).click(element).key_up(Keys.CONTROL).perform()
else:
actions.click(element).perform()
except Exception as e:

View File

@ -2253,6 +2253,7 @@ if __name__ == '__main__':
"keyboard": True, # 是否监听键盘输入
"pause_key": "p", # 暂停键
"version": "0.6.2",
"docker_driver": "",
}
c = Config(config)
print(c)
@ -2442,8 +2443,14 @@ if __name__ == '__main__':
except:
browser = "chrome"
if browser == "chrome":
selenium_service = Service(executable_path=driver_path)
browser_t = MyChrome(service=selenium_service, options=options)
if c.docker_driver == "":
print("Using local driver")
selenium_service = Service(executable_path=driver_path)
browser_t = MyChrome(service=selenium_service, options=options, mode='local_driver')
else:
print("Using remote driver")
# Use docker driver, default address is http://localhost:4444/wd/hub
browser_t = MyChrome(command_executor=c.docker_driver, options=options, mode='remote_driver')
elif browser == "edge":
from selenium.webdriver.edge.service import Service as EdgeService
from selenium.webdriver.edge.options import Options as EdgeOptions

View File

@ -19,11 +19,15 @@ desired_capabilities["pageLoadStrategy"] = "none"
class MyChrome(webdriver.Chrome):
class MyChrome(webdriver.Chrome, webdriver.Remote):
def __init__(self, *args, **kwargs):
def __init__(self, mode='local_driver', *args, **kwargs):
self.iframe_env = False # 现在的环境是root还是iframe
super().__init__(*args, **kwargs) # 调用父类的 __init__
if mode == "local_driver":
webdriver.Chrome.__init__(self, *args, **kwargs)
elif mode == "remote_driver":
webdriver.Remote.__init__(self, *args, **kwargs)
# super().__init__(*args, **kwargs) # 调用父类的 __init__
# def find_element(self, by=By.ID, value=None, iframe=False):
# # 在这里改变查找元素的行为