Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/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-Selenium继续使用相同的实例_Python_Selenium - Fatal编程技术网

Python-Selenium继续使用相同的实例

Python-Selenium继续使用相同的实例,python,selenium,Python,Selenium,我有几个问题。当我打开新的Selenium实例时,我希望继续处理相同的实例,但不同的请求 例如:当我打开此url并让用户登录时,之后我想继续使用相同的实例或会话不同的方法 Mymain.py代码: import test2 from flask import Flask, jsonify, request app = Flask(__name__) object = test2.ExampleClass() @app.route('/login', methods=['GET']) def

我有几个问题。当我打开新的Selenium实例时,我希望继续处理相同的实例,但不同的请求

例如:当我打开此url并让用户登录时,之后我想继续使用相同的实例或会话不同的方法

Mymain.py代码:

import test2
from flask import Flask, jsonify, request

app = Flask(__name__)
object = test2.ExampleClass()

@app.route('/login', methods=['GET'])
def login():
    slug = request.args.get("slug")
    data = object.welcome()

    return jsonify(data)


@app.route('/tutorials', methods=['GET'])
def tutorials():
    method = request.args.get("method")

    data = object.tutorials()

    return jsonify(data)

@app.route('/exit', methods=['GET'])
def exit():
    data = object.exit()

    return jsonify(data)


if __name__ == '__main__':
    port = 8001
    app.run(host='0.0.0.0', port=port)
还有我的Selenium实例:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from flask import request
import time, logging
import shutil

class ExampleClass():
    stage = "welcome"
    token = ""

    def __init__(self):
        pathChrome = "/Users/user/Downloads/chromedriver 2"
        self.driver = webdriver.Chrome(executable_path=pathChrome)
        self.driver.get("https://example.com/login")

    def welcome(self):
        identity = request.args.get("identity")
        password = request.args.get("password")
        self.token = request.args.get("token")

        driver = self.driver

        try:
            customer_field = driver.find_element_by_id("txtuserid")
            customer_field.clear()
            customer_field.send_keys(identity)
        except NoSuchElementException:
            logging.warning('txtuserid ID not found!')
            data = {"stage": "welcome", "status": 500,  "error": "You got error!"}

            return data

        try:
            password_field = driver.find_element_by_id("txtpass")
            password_field.clear()
            password_field.send_keys(password)
        except NoSuchElementException:
            logging.warning('txtpass ID not found!')
            data = {"stage": "welcome", "status": 500, "error": "You got error!"}

            return data

        data = {"stage": self.stage, "status": 200}

        driver.save_screenshot(filename="ss/" + str(self.token) + "/login" + ".png")

        return data
    def tutorials(self):
        page = request.args.get("page")
        driver = self.driver

        try:
            page_field = driver.find_element_by_id("pageId")
            page_field.clear()
            page_field.send_keys(page)
        except NoSuchElementException:
            logging.warning('pageId ID not found!')
            data = {"stage": "welcome", "status": 500, "error": "You got error!"}

            return data

        data = {"stage": self.stage, "status": 200}

        driver.save_screenshot(filename="ss/" + str(self.token) + "/tutorials" + ".png")

        return data

    def exit(self):
        driver = self.driver
        driver.switch_to.default_content()
        exit_field = driver.find_element_by_id("btnExit")
        exit_field.click()

        data = {"stage": "exited", "status": 200}
        driver.save_screenshot(filename="ss/" + str(self.token) + "/exit" + ".png")

        shutil.rmtree("ss/" + self.token)
        driver.quit()

        return data
如何继续使用同一实例直到退出


提前谢谢你

所以我认为你需要定义你的

self.driver=webdriver.Chrome(可执行文件路径=pathcrome)


在main中,每次调用示例类时,都将驱动程序作为参数传递。

因此我认为您需要定义

self.driver=webdriver.Chrome(可执行文件路径=pathcrome)

在main中,每次调用示例类时,都将驱动程序作为参数传递