当前位置: 首页 > 知识库问答 >
问题:

蟒蛇 - 硒继续使用相同的实例

傅俊德
2023-03-14

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

例如:当我打开此url https://example.com/login?token=1231232h31g23g123 和用户登录时,之后我想继续相同的实例或会话不同的方法。

我的main.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)

和我的硒实例:

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

如何继续使用相同的实例直到退出?

提前感谢!

共有1个答案

狄阳秋
2023-03-14

所以在我看来,你需要定义你的

self.driver = webdriver。chrome(executable _ path = path chrome)

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

 类似资料:
  • 我正在尝试使用本教程从一个使用selenium and beautiful soup的站点提取房地产列表信息:https://medium.com/@ben.sturm/scraping-house-listing-data-using-Selenium-and-Beautiful Soup-1CBB94BA9492 目的是在找到“下一页”按钮之前收集第一页的所有href链接,导航到下一页并收集该

  • 我正在使用sublime来编写python脚本,下面的代码是为python中的硒使用webdriver_manager包自动安装驱动程序 代码运行良好,但我得到了类似的警告 如何修复这样的错误?

  • 我尝试使用xpath和classname来定位并单击按钮。然而,什么都不管用。 driver.find_element(By.XPATH,“//button[@class='sc-cqCuEk ffSPoi MuiButtonBase root sc dliRfk hLpdQI MuiAccordionSummary root Mui展开的MuiAccountionSummarygutters s

  • 我试图选择和控制www.ziprecruiter.com网站上的下拉菜单使用硒称为半径。因为我是初学者,我似乎不明白为什么我不能控制这个下拉半径菜单。我尝试使用查找ID,名称,Xpath和选择,但似乎没有工作。我想在半径下拉菜单中选择选项“25英里”,有什么想法吗?

  • 我正在尝试点击图中所示的下拉菜单 这就是我尝试过的 但它给了我这个错误 NoSuchElementException: Message:找不到element://div[@ class = ' choosed-container choosed-container-single ']//a[@ class = ' choosed-single choosed-single-with-deselec

  • 我正在运行Ubuntu 18.04。 我使用mysql连接器-python连接Python到MySQL。 我使用的是Python 3.6.7,并且已经安装了mysql连接器-python。 我已经安装了mysql连接器-python-py3_8.0.13-1ubuntu18.10_all.deb. 在运行Python脚本时,mysql。连接器模块似乎加载正确,但脚本在碰到光标时失败。next()具