这是使用python和selenium的POM(页面对象模型)的正确实现吗?

时间:2019-02-13 10:45:40

标签: python selenium selenium-webdriver pageobjects

用例

我正在尝试使用python和selenium了解POM,大多数文章都是非常高级的,因此我从许多文章中引荐了许多文章并对我的场景进行了一些理解和实现。

测试场景

转到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对象模型中实现以上脚本

我创建了两个类

  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,还提出了进一步改进它的任何建议或指导?

0 个答案:

没有答案