为了熟悉PageObject如何使用,通过访问雪球官方网址来进行模拟练习,做一下过程记录,加深自己的理解。
要求:访问雪球主页,输入关键字搜索,进入搜索页面,选择某个基金加入自选这一过程。使用PageObject可以避免UI发生变化时,不需要大范围去修改自己的测试代码。
将访问过程分为以下模块:
- basePage:初始化作用
- MainPage:主页,输入关键字搜索
- SearchePage:搜索成功页面,做其他功能操作
- test_xueqiu:执行所要求的操作
test_xueqiu.py:主要执行文件,打开网址,输入内容搜索,将基金加入自选列表
from selenium import webdriver
from selenium.webdriver import DesiredCapabilities
from time import sleep
from page_object.page.MainPage import MainPage
class TestXueqiu(object):
def setup(self):
# self.driver = webdriver.Remote(desired_capabilities=DesiredCapabilities.CHROME)
self.driver = webdriver.Chrome()
# 等待10s
# self.driver.implicitly_wait(10)
self.driver.get('https://xueqiu.com/')
# 初始化mainpage对象
self.main = MainPage(self.driver)
def test_search(self):
self.main.search('alibaba').follow('09988')
def teardown(self):
sleep(10)
self.driver.quit()
basePage:初始化driver
# from selenium.webdriver.remote.webdriver import WebDriver
class basePage(object):
def __init__(self, driver):
# 初始化driver
self.driver = driver
MainPage:定位输入框,输入关键字搜索
from page_object.page.basePage import basePage
from page_object.page.SearchPage import SearchPage
class MainPage(basePage):
def search(self, keyword):
# 输入搜索关键字
self.driver.find_element_by_name("q").send_keys(keyword)
self.driver.find_element_by_css_selector(".Header_nav__search__addon_2nk button").click()
return SearchPage(self.driver)
SearchePage:搜索成功后,将对应基金做加入自选功能操作
from time import sleep
from page_object.page.basePage import basePage
class SearchPage(basePage):
def follow(self, kw):
# 添加个等待时间,保证页面加载完成,否则容易发生无法定位到对应的元素,因为还未被加载出来
sleep(3)
self.driver.find_element_by_xpath('//*[contains(text(), "%s")]/../../../..//*[@]' % kw).click()
return self
最后执行test_xueqiu.py文件,即可成功运行。
注意:选择执行文件,右键选择pytest方式运行,否则无法弹出浏览器看执行效果。
问题总结:
- 通过页面之间的传参来实现过程的拆分,在写代码的时候,没有注意searchpage页面没有写返回值,返回 return self,导致没法弹出加入自选的弹窗
- driver方式,一开始使用Remote的webdriver,因为没有安装配置,执行显示拒绝连接
- 执行test_xueqiu.py文件,一开始直接右键运行,没有选择pytest方式运行,一直没有看到浏览器弹出执行



