python - 如何在 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()
解决方案
你可以使用 pytest 框架。使用夹具很容易实现您的场景。
您可以创建浏览器类,然后在该类构造函数中将驱动程序分配给 self._。您可以在需要 Web 驱动程序实例的任何地方使用浏览器类作为基类。
推荐阅读
- performance - 如何解读 Dapr Sidecar 性能测试?
- python - 将 pyinstaller 用于 pyside6 和 qt 的问题
- excel - 如何将每一行保存为 Excel 中不同目录中的单独文件(其中一列中引用了目录名称)?
- maven - 如何创建新的 Maven 生命周期?
- php - Axios API 请求不会在 Vue.js 中发送完整的引用
- android - 如何找到我的活动类的内存泄漏
- nosql - Oracle NoSQL 云服务 - 摄取数据时出现 OperationThrottlingException
- python - 如何仅将值从一个字典复制到另一个字典?
- r - 将整洁的数据框转换为带有列表列表的数据框
- time-series - Azure AutoML 时间序列目标滞后