用例
我正在尝试使用python和selenium了解POM,大多数文章都是非常高级的,因此我从许多文章中引荐了许多文章并对我的场景进行了一些理解和实现。
测试场景
转到Facebook登录页面,在相应字段中输入用户名和密码
简单测试脚本
下面的脚本执行上述任务。
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对象模型中实现以上脚本
我创建了两个类
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,还提出了进一步改进它的任何建议或指导?