python selenium框架_python selenium 基础框架

1 #coding=utf-8

2 importtime3 from selenium.common.exceptions importNoSuchElementException4 importos.path5 from unittest3.framework.logger importLogger6

7 #create a logger instance

8 logger = Logger(logger="BasePage").getlog()9

10

11 classBasePage(object):12 """

13 定义一个页面基类,让所有页面都继承这个类,封装一些常用的页面操作方法到这个类14 """

15

16 def __init__(self, driver):17 self.driver =driver18

19 #quit browser and end testing

20

21 defquit_browser(self):22 self.driver.quit()23

24 #浏览器前进操作

25

26 defforward(self):27 self.driver.forward()28 logger.info("Click forward on current page.")29

30 #浏览器后退操作

31

32 defback(self):33 self.driver.back()34 logger.info("Click back on current page.")35

36 #隐式等待

37

38 defwait(self, seconds):39 self.driver.implicitly_wait(seconds)40 logger.info("wait for %d seconds." %seconds)41

42 #点击关闭当前窗口

43

44 defclose(self):45 try:46 self.driver.close()47 logger.info("Closing and quit the browser.")48 exceptNameError as e:49 logger.error("Failed to quit the browser with %s" %e)50

51 #保存图片

52

53 defget_windows_img(self):54 """

55 在这里我们把file_path这个参数写死,直接保存到我们项目根目录的一个文件夹.\Screenshots下56 """

57 file_path = os.path.dirname(os.path.abspath('.')) + '/screenshots/'

58 rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))59 screen_name = file_path + rq + '.png'

60 try:61 self.driver.get_screenshot_as_file(screen_name)62 logger.info("Had take screenshot and save to folder : /screenshots")63 exceptNameError as e:64 logger.error("Failed to take screenshot! %s" %e)65 self.get_windows_img()66

67 #定位元素方法

68

69 deffind_element(self, selector):70 """

71 这个地方为什么是根据=>来切割字符串,请看页面里定位元素的方法72 submit_btn = "id=>su"73 login_lnk = "xpath => //*[@id='u1']/a[7]" # 百度首页登录链接定位74 如果采用等号,结果很多xpath表达式中包含一个=,这样会造成切割不准确,影响元素定位75 :param selector:76 :return: element77 """

78 element = ''

79 if '=>' not inselector:80 returnself.driver.find_element_by_id(selector)81 selector_by = selector.split('=>')[0]82 selector_value = selector.split('=>')[1]83

84 if selector_by == "i" or selector_by == 'id':85 try:86 element =self.driver.find_element_by_id(selector_value)87 logger.info("Had find the element \' %s \' successful"

88 "by %s via value: %s" %(element.text, selector_by, selector_value))89 exceptNoSuchElementException as e:90 logger.error("NoSuchElementException: %s" %e)91 self.get_windows_img() #take screenshot

92 elif selector_by == "n" or selector_by == 'name':93 element =self.driver.find_element_by_name(selector_value)94 elif selector_by == "c" or selector_by == 'class_name':95 element =self.driver.find_element_by_class_name(selector_value)96 elif selector_by == "l" or selector_by == 'link_text':97 element =self.driver.find_element_by_link_text(selector_value)98 elif selector_by == "p" or selector_by == 'partial_link_text':99 element =self.driver.find_element_by_partial_link_text(selector_value)100 elif selector_by == "t" or selector_by == 'tag_name':101 element =self.driver.find_element_by_tag_name(selector_value)102 elif selector_by == "x" or selector_by == 'xpath':103 try:104 element =self.driver.find_element_by_xpath(selector_value)105 logger.info("Had find the element \' %s \' successful"

106 "by %s via value: %s" %(element.text, selector_by, selector_value))107 exceptNoSuchElementException as e:108 logger.error("NoSuchElementException: %s" %e)109 self.get_windows_img()110 elif selector_by == "s" or selector_by == 'selector_selector':111 element =self.driver.find_element_by_css_selector(selector_value)112 else:113 raise NameError("Please enter a valid type of targeting elements.")114

115 returnelement116

117 #输入

118

119 deftype(self, selector, text):120

121 el =self.find_element(selector)122 el.clear()123 try:124 el.send_keys(text)125 logger.info("Had type \' %s \' in inputBox" %text)126 exceptNameError as e:127 logger.error("Failed to type in input box with %s" %e)128 self.get_windows_img()129

130 #清除文本框

131

132 defclear(self, selector):133

134 el =self.find_element(selector)135 try:136 el.clear()137 logger.info("Clear text in input box before typing.")138 exceptNameError as e:139 logger.error("Failed to clear in input box with %s" %e)140 self.get_windows_img()141

142 #点击元素

143

144 defclick(self, selector):145

146 el =self.find_element(selector)147 try:148 el.click()149 logger.info("The element \' %s \' was clicked." %el.text)150 exceptNameError as e:151 logger.error("Failed to click the element with %s" %e)152

153 #或者网页标题

154

155 defget_page_title(self):156 logger.info("Current page title is %s" %self.driver.title)157 returnself.driver.title158

159 @staticmethod160 defsleep(seconds):161 time.sleep(seconds)162 logger.info("Sleep for %d seconds" % seconds)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值