首页 > 解决方案 > 如何在 python 中创建单个 webdriver 实例,以便我可以在代码中的任何地方访问它?

问题描述

我正在尝试为 selenium 创建一个框架,但坚持使用此驱动程序初始化。PLz 帮助

这是第一次执行的 Base.py 文件。(这里我已经编写了午餐浏览器的函数)

    from selenium import webdriver
    import configparser
    from Utility import Read_Properties

global driver
    class Base:

        def Lunch_Browser(name):
            if name == 'chrome':
                driver = webdriver.Chrome(
                    executable_path='C:/Users/MANJKUM/PycharmProjects/Paintshop/Driver/chromedriver.exe')
                driver.implicitly_wait(50)
                driver.maximize_window()
                driver.get(Read_Properties.readproperty('LOGINDETAIL', 'URL'))
                return driver

            elif (name == 'ff'):
                driver = webdriver.firefox(
                    executable_path='C:/Users/MANJKUM/PycharmProjects/Paintshop/Driver/chromedriver.exe')
                driver.implicitly_wait(50)
                driver.maximize_window()
                `enter code here`driver.get(Read_Properties.readproperty('LOGINDETAIL', 'URL'))
                return driver
                else:
                print('No Browser')

在这里,我为登录页面的所有 Web 元素的 ID 和 xpath 编写了代码。 它就像页面对象模型。 登录.py

from selenium import webdriver
from Utility import Read_Properties
from selenium.webdriver.common.by import By
from Base import Base
class login(object):

    def __init__(self, driver):
        self.driver = driver
        self.username = driver.find_element(By.ID,'username')
        self.password = driver.find_element(By.ID, 'password')
        self.login_tbtn = driver.find_element('login-loginbutton')
    def username(self):
        return self.username
    def password(self):
        self.password.clear()
        self.password.send_keys(Read_Properties.readproperty('LOGINDETAIL', 'PASSWORD'))
    def login_btn(self):
        return self.login_tbtn

下面的代码是针对 test_login.py 的, 这里我想为 loginpage 编写测试用例。

import time

from selenium import webdriver
from Base import Base
from POM_Project.Pages.Login import login
from Utility import Read_Properties
from POM_Project.Pages import Login
from Utility import Read_Properties

driver = webdriver.chrome
#obj_Base=Base()
obj_login=login(driver)

def test_Login():
    Base.Base.Lunch_Browser('chrome')
    time.sleep(20)
    obj_login.username(driver)
    obj_login.password(driver)

test_Login()

标签: pythonseleniumselenium-webdriverpytest

解决方案


你可以使用 pytest 框架。使用夹具很容易实现您的场景。

您可以创建浏览器类,然后在该类构造函数中将驱动程序分配给 self._。您可以在需要 Web 驱动程序实例的任何地方使用浏览器类作为基类。


推荐阅读