diff --git a/.temp_to_pub/EasySpider_Linux_x64/Code/easyspider_executestage.py b/.temp_to_pub/EasySpider_Linux_x64/Code/easyspider_executestage.py index 7e8464f..5fdbe30 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/Code/easyspider_executestage.py +++ b/.temp_to_pub/EasySpider_Linux_x64/Code/easyspider_executestage.py @@ -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: diff --git a/ExecuteStage/easyspider_executestage.py b/ExecuteStage/easyspider_executestage.py index 5fdbe30..48c73ac 100644 --- a/ExecuteStage/easyspider_executestage.py +++ b/ExecuteStage/easyspider_executestage.py @@ -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 diff --git a/ExecuteStage/myChrome.py b/ExecuteStage/myChrome.py index d6d41f8..c15aa33 100644 --- a/ExecuteStage/myChrome.py +++ b/ExecuteStage/myChrome.py @@ -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): # # 在这里改变查找元素的行为