Это правильная реализация POM (объектная модель страницы) с использованием Python и Selen? - PullRequest
0 голосов
/ 13 февраля 2019

Вариант использования

Я пытаюсь понять о POM, используя python и selenium. Большинство постов очень высокого уровня, поэтому я сослался на множество постов, получил некоторое понимание и реализовал егодля каждого сценария из каждого сообщения.

Сценарий тестирования

Перейдите на страницу входа в Facebook, введите имя пользователя и пароль в соответствующие поля

Fblogin page

Простой тестовый скрипт

Ниже скрипт выполняет вышеуказанную задачу.

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

Я создал два класса

  1. 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, а также какие-либо предложения или рекомендации по его дальнейшему улучшению?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...