【问题标题】:How to create a single webdriver instance in python so that i can access it everywhere in my code?如何在 python 中创建单个 webdriver 实例,以便我可以在代码中的任何地方访问它?
【发布时间】:2019-02-08 09:39:28
【问题描述】:

我正在尝试为 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 编写了代码。 它就像页面对象模型。 Login.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 这里我要写登录页面的测试用例。

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()

【问题讨论】:

  • 您可以编写一个会话范围的夹具来创建和返回驱动程序,并通过在 args 列表中传递其名称在测试中使用它。
  • @hoefling 我尝试过使用fixture,但一个问题是,我可以在所有测试类中访问它。但不知道如何在Pageobject(Login.py>>登录类)中访问它。

标签: python selenium selenium-webdriver pytest


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多