Вариант использования
Я пытаюсь понять о POM, используя python и selenium. Большинство постов очень высокого уровня, поэтому я сослался на множество постов, получил некоторое понимание и реализовал егодля каждого сценария из каждого сообщения.
Сценарий тестирования
Перейдите на страницу входа в Facebook, введите имя пользователя и пароль в соответствующие поля
![Fblogin page](https://i.stack.imgur.com/nm8aj.jpg)
Простой тестовый скрипт
Ниже скрипт выполняет вышеуказанную задачу.
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
class Facebooklogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def test_search_in_facebook(self):
driver = self.driver
driver.get("https://www.facebook.com")
self.assertIn("Facebook", driver.title)
elem_user = driver.find_element_by_xpath("//input[@id='email']")
elem_user.send_keys("abc")
elem_password=driver.find_element_by_xpath("//input[@id='pass']")
elem_password.send_keys("Demo")
import time
time.sleep(5)
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()
Реализацияприведенный выше скрипт в объекте Page Model
Я создал два класса
- loginpage.py, который содержит все методы
loginpage.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
class loginpage:
def __init__(self,selenium_driver,base_url="https://www.facebook.com/"):
self.base_url = base_url
self.driver = selenium_driver
self.driver.get(self.base_url)
def set_user_name(self,username,username_value):
time.sleep(5)
self.driver.find_element_by_xpath(username).send_keys(username_value)
def set_password(self,password,password_value):
time.sleep(5)
self.driver.find_element_by_xapth(password).send_keys(password_value)
2 Класс test_login, который содержит контрольные примеры
test_login_page.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import unittest
import loginpage
class test_login(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.username="//input[@id='email']"
self.username_value="demo"
self.password="//input[@id='pass']"
self.password_value="password"
self.login_page=loginpage.loginpage(self.driver)
def test_title(self):
self.assertIn("facebook", self.driver.title)
def test_username_password_input(self):
self.login_page.set_user_name(self.username,self.username_value)
self.login_page.set_password(self.password,self.password_value)
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()
Результат
Когда я запускаю класс test_login, он работает нормально и дает желаемые результаты, полученные из версииу первого сценария.
путаница есть!Правильно ли я понял и внедрил POM, а также какие-либо предложения или рекомендации по его дальнейшему улучшению?