更新以反映當前問題!
我對 Python 非常陌生,并且真的很難根據頁面物件模型(我可以在 C# 中做的事情)來構建我的測驗。我只是不知道如何傳遞驅動程式物件/如果我什至試圖解決正確的問題!請幫忙。
作為參考,這里是測驗檔案和登錄頁面。當測驗運行時,它會啟動瀏覽器然后立即失敗,因為它找不到 emailField 物件。
"檔案 "c:\Users\079382\Downloads\QA Technical Task 1\Grain Supplier Solution\grains\tests\tests.py",第 19 行,在 loginPage.emailField.send_keys("[email protected]") 屬性錯誤: 'LoginPage' 物件沒有屬性 'emailField'"
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from pages.adminpage import AdminPage
from pages.loginpage import LoginPage
# def test_accessibility_tab_order_admin_page(self):
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('http://localhost:8000/admin/')
driver.maximize_window()
loginPage = LoginPage(driver)
#Ensure that the field selected by default is the email field
assert driver.switch_to.active_element == loginPage.emailField
driver.find_element_by_id('djHideToolBarButton').click()
loginPage.emailField.send_keys("[email protected]")
loginPage.passwordField.send_keys("admin")
loginPage.loginButton.click()
adminPage = AdminPage(driver)
adminPage.checkTabOrder()
driver.quit()
from selenium import webdriver
from selenium.webdriver.common.by import By
from pages.basepage import BasePage
class LoginPage(BasePage):
#login page methods
def __init__(self, driver):
super().__init__(driver)
self.driver = driver
# #login page elements
emailField = self.driver.find_element_by_css_selector('input[name="username"]')
passwordField = self.driver.find_element_by_css_selector('input[name="password"]')
loginButton = self.driver.find_element_by_css_selector('input[type="submit"]')
uj5u.com熱心網友回復:
根據您的新示例優化答案:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from pages.adminpage import AdminPage
from pages.loginpage import LoginPage
# def test_accessibility_tab_order_admin_page(self):
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('http://localhost:8000/admin/')
driver.maximize_window()
loginPage = LoginPage(driver)
loginPage.test()
#adminPage = AdminPage(driver)
#adminPage.checkTabOrder()
driver.quit()
from selenium import webdriver
from selenium.webdriver.common.by import By
from pages.basepage import BasePage
class LoginPage(BasePage):
#login page methods
def __init__(self, driver):
super().__init__(driver)
self.driver = driver
# login page elements
self.emailField = self.driver.find_element_by_css_selector('input[name="username"]')
self.passwordField = self.driver.find_element_by_css_selector('input[name="password"]')
self.loginButton = self.driver.find_element_by_css_selector('input[type="submit"]')
def test(self):
# ensure that the field selected by default is the email field
assert self.driver.switch_to.active_element == self.emailField
self.driver.find_element_by_id('djHideToolBarButton').click()
self.emailField.send_keys("[email protected]")
self.passwordField.send_keys("admin")
self.loginButton.click()
uj5u.com熱心網友回復:
我不確定我是否理解這個問題,但看起來你已經解決了“如何將驅動程式傳遞給你的頁面物件”的問題,但是有一些 Python 問題。關鍵是負責按預期class BasePage跟蹤驅動程式和派生class LoginPage(BasePage)用途。BasePage
有幾個問題:
缺少它的
class AdminPage基類,可能應該閱讀class AdminPage(BasePage).你的類的代碼必須在單獨的方法中,每個方法都有一個
self引數,并且driver必須以self.driver.
看看下面的典型例子:
class BasePage:
def __init__(self, driver):
self.driver = driver
class MainPage(BasePage):
def __init__(self, driver):
super().__init__(driver)
def test(self):
print(self.driver)
mainPage = MainPage(4711)
mainPage.test()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/488591.html
標籤:Python 硒 硒网络驱动程序 自动化 网络驱动程序
