创建浏览器对象类
from selenium import webdriver
from configs import url
class Driver:
_driver = None
@classmethod
def get_driver(cls,broswerName='Firefox'):
'''
如果driver为None, 创建浏览器对象
:param broswerName: 要创建的浏览器对象名字
:return: 返回一个浏览器对象
'''
if cls._driver is None:
if broswerName == 'Chrome':
cls._driver = webdriver.Chrome(url.driverDir['Chrome'])
elif broswerName == 'Firefox':
cls._driver = webdriver.Firefox()
cls._driver.get(url.jiapeng_url) # 获取测试系统地址
if cls._driver == 'Chrome':
'''创建的浏览器对象为Chrome时, 页面会有警告弹框'''
privacy_link = cls._driver.find_element_by_css_selector("a[id='proceed-link']") #定位页面中要测试的链接, 赋值给变量
if privacy_link is None:
pass
elif privacy_link != None:
cls._driver.find_element_by_css_selector("button[id='details-button']").click() # 点击警告页面中的高级按钮
cls._driver.find_element_by_css_selector("a[id='proceed-link']").click() # 点击链接
cls._driver.maximize_window() # 窗口最大化
return cls._driver
页面类
from PyLib.basePage import BasePage
from selenium.webdriver.common.by import By
class HomePage(BasePage):
'''网站首页, 页面元素类'''
def caseList_first(self):
'''精品案例展示列表第一张图片'''
caseList_first_ele = self.driver.find_element_by_css_selector("div[class='main1']>:nth-child(2)>:nth-child(2)>img")
return caseList_first_ele
def caseList_second(self):
'''精品案例展示列表第二张图片'''
caseList_second_ele = self.driver.find_element_by_css_selector("div[class='main1']>:nth-child(2)>:nth-child(4)>img")
return caseList_second_ele
def get_imgName_first(self):
'''精品案例列表中第一个案例的名称'''
get_imgName_first_ele = self.driver.find_element_by_css_selector("div[class='main1']>:nth-child(2)>:nth-child(3) a").text
return get_imgName_first_ele
class HomePage_action(HomePage):
'''网站首页, 页面动作类'''
def caseList_fist_action(self):
'''保存图片'''
BasePage().img_save(HomePage().caseList_first(),HomePage().get_imgName_first()) # img_save为公共类中的一个方法
if __name__ == '__main__':
HomePage_action().caseList_fist_action()
报错如下
Traceback (most recent call last):
File "D:/Projects/jiapeng/PyLib/homePage.py", line 34, in
HomePage_action().caseList_fist_action()
File "D:/Projects/jiapeng/PyLib/homePage.py", line 30, in caseList_fist_action
BasePage().img_save(HomePage().caseList_first(),HomePage().get_imgName_first()) # img_save为公共类中的一个方法
File "D:/Projects/jiapeng/PyLib/homePage.py", line 14, in caseList_first
caseList_first_ele = self.driver.find_element_by_css_selector("div[class='main1']>:nth-child(2)>:nth-child(2)>img")
AttributeError: 'NoneType' object has no attribute 'find_element_by_css_selector'