烧瓶中的硒实例

发布于 2025-02-13 11:02:24 字数 1240 浏览 0 评论 0原文

我有这两个端点:

@app.route('/api/v1/order', methods=['POST'])
def order():

        msg, return_data = bz.insertOrder()
        return msg, return_data


@app.route('/api/v1/offer', methods=['POST'])
def offer():
    msg, return_data = bz.insertOffer()
    return msg, return_data

两个函数都称之为这个,我剥离了一些代码行:

def insertOrder():
    return scrape(1)


def insertOffer():
    return scrape(2)

最后是刮擦功能,这只是一个剪切:

def scrape(var):
    try:
        driver = webdriver.Safari()
        driver.get(login_url)
        elem = driver.find_element(By.NAME, "UserName")
        elem.clear()
        elem.send_keys(username)
        elemPwd = driver.find_element(By.NAME, "Password")
        elemPwd.clear()
        elemPwd.send_keys(password)
        elemPwd.send_keys(Keys.RETURN)
        time.sleep(1)
        ....
        driver.get(logout_url)
        driver.close()
        return '', http.HTTPStatus.CREATED
    except:
       driver.get(logout_url)
       driver.close()
       return 'Internal server error', http.HTTPStatus.BAD_REQUEST

我thounght可以看到多个Chrome浏览器打开和关闭,但是一旦我在我的我得到的同一时间:

unboundlocalerror:本地变量'驱动程序'之前引用了 分配

I have these two endpoint:

@app.route('/api/v1/order', methods=['POST'])
def order():

        msg, return_data = bz.insertOrder()
        return msg, return_data


@app.route('/api/v1/offer', methods=['POST'])
def offer():
    msg, return_data = bz.insertOffer()
    return msg, return_data

Both functions call this, I strip some code lines:

def insertOrder():
    return scrape(1)


def insertOffer():
    return scrape(2)

And finally scrape function is this, again it is just a snipped:

def scrape(var):
    try:
        driver = webdriver.Safari()
        driver.get(login_url)
        elem = driver.find_element(By.NAME, "UserName")
        elem.clear()
        elem.send_keys(username)
        elemPwd = driver.find_element(By.NAME, "Password")
        elemPwd.clear()
        elemPwd.send_keys(password)
        elemPwd.send_keys(Keys.RETURN)
        time.sleep(1)
        ....
        driver.get(logout_url)
        driver.close()
        return '', http.HTTPStatus.CREATED
    except:
       driver.get(logout_url)
       driver.close()
       return 'Internal server error', http.HTTPStatus.BAD_REQUEST

I thounght to see multiple chrome browser open and close but as soon as I launch two post at the same time I got:

UnboundLocalError: local variable 'driver' referenced before
assignment

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

╰つ倒转 2025-02-20 11:02:24

如果您确实在代码中调用了两个不同的实例,则可以运行多个Chrome浏览器的实例。您的问题是您只有1个驱动程序,但试图通过

from selenium import webdriver

def scrape(var):
     drivers =  
 [webdriver.Chrome(executable_path=r'C:\PATH\TO\DRIVER\chromedriver.exe'),  
 webdriver.Chrome(executable_path=r'C:\PATH\TO\DRIVER\chromedriver.exe')]

     [Your Logic here]

     drivers[var].get("YourURL")
    
     [more Logic here]

在驱动程序数组中宣布更多的Web驱动程序来参与您可能会运行更多实例的驱动程序。

You may run multiple instances of chrome browser if you do call two different instances of it in your code. Your problem is you have only 1 driver declared but trying to involke the same driver

from selenium import webdriver

def scrape(var):
     drivers =  
 [webdriver.Chrome(executable_path=r'C:\PATH\TO\DRIVER\chromedriver.exe'),  
 webdriver.Chrome(executable_path=r'C:\PATH\TO\DRIVER\chromedriver.exe')]

     [Your Logic here]

     drivers[var].get("YourURL")
    
     [more Logic here]

you may run more instances by declaring more webdrivers inside your drivers array.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文