Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不重新启动webdriver的情况下动态更新Selenium方法?_Python_Multithreading_Selenium_Selenium Webdriver_Tkinter - Fatal编程技术网

Python 如何在不重新启动webdriver的情况下动态更新Selenium方法?

Python 如何在不重新启动webdriver的情况下动态更新Selenium方法?,python,multithreading,selenium,selenium-webdriver,tkinter,Python,Multithreading,Selenium,Selenium Webdriver,Tkinter,我有一个Selenium机器人,可以与EA Sports FIFA 21 web应用程序交互,在那里你可以买卖游戏中的足球运动员。界面看起来像 假设我的原始程序是一个脚本: login()-已登录到平台 goToTransferMarket()-导航到“市场搜索”页面 inputSearchParameters(playername)-输入我的搜索参数进行搜索 单击搜索()-单击搜索按钮 评估结果(购买价格)-评估结果和购买比购买价格便宜的玩家 如果任何方法失败,我将不得不退出并从头开始。为了解

我有一个Selenium机器人,可以与EA Sports FIFA 21 web应用程序交互,在那里你可以买卖游戏中的足球运动员。界面看起来像

假设我的原始程序是一个脚本:

  • login()-已登录到平台
  • goToTransferMarket()-导航到“市场搜索”页面
  • inputSearchParameters(playername)-输入我的搜索参数进行搜索
  • 单击搜索()-单击搜索按钮
  • 评估结果(购买价格)-评估结果和购买比购买价格便宜的玩家
  • 如果任何方法失败,我将不得不退出并从头开始。为了解决这个问题,我为每个在自己的线程中执行的函数构建了一个带有按钮的线程。这样,如果函数失败,比如单击搜索按钮,我可以手动执行操作并继续测试后续方法

    但是,要修复损坏的方法,我必须从头开始重新启动程序,这需要一个繁琐的登录过程来修复一些简单的问题,比如忘记将字符串转换为整数。大量登录也会引起不必要的注意

    鉴于我已经在当前测试会话期间登录,是否有办法重新编译我的程序并“抓取”现有的webdriver会话?

    更好的是,是否可以动态更改我的函数,并使用GUI中的“使用最新代码更新”按钮进行更新?


    我的GUI中的“玩家列表”框写入文本文件,允许我实时更改机器人搜索的对象。当我单击“使用列表投标”按钮时,文本文件被传递到主机器人搜索方法。这就是为什么我想知道是否可以将它设置为以某种方式在单独的线程中重新编译部分代码,并保留现有的webdriver会话。任何帮助都将是惊人的,谢谢。

    您可以添加一个无限while循环并尝试catch,以确保您的测试不会失败,否则:

    如果您使用的是chrome:

    您可以使用Debuger地址连接到现有的chrome会话,因此从cmd使用指定的调试端口启动chrome

    使用调试端口启动chrome:(在windows中,搜索其他操作系统如何在特定调试端口启动chrome)

    \chrome.exe”--远程调试端口=1559

    在硒的使用方面:

    爪哇:

    Python:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:1559")
    driver = webdriver.Chrome(options=chrome_options)
    
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:1559")
    driver = webdriver.Chrome(options=chrome_options)