烧瓶中的硒实例
我有这两个端点:
@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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您确实在代码中调用了两个不同的实例,则可以运行多个Chrome浏览器的实例。您的问题是您只有1个驱动程序,但试图通过
在驱动程序数组中宣布更多的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
you may run more instances by declaring more webdrivers inside your drivers array.