python selenium对象封装_Selenium基础框架的封装(Python版)

1 # -*- coding:utf-8 -*-

2 from selenium import webdriver

3 import time

4

5 OVER_TIME = 5

6 BASE_URL = "https://passport.cnblogs.com/user/signin?ReturnUrl=https%3A%2F%2Fwww.cnblogs.com%2F"

7

8

9 class Driver(object):

10

11     def __new__(cls, *args, **kw):

12         """

13         使用单例模式将类设置为运行时只有一个实例,在其他Python类中使用基类时,

14         可以创建多个对象,保证所有的对象都是基于一个浏览器

15         """

16         if not hasattr(cls, '_instance'):

17             orig = super(Driver, cls)

18             cls._instance = orig.__new__(cls, *args, **kw)

19         return cls._instance

20

21     def start(self, url=BASE_URL, driver_name="Chrome"):

22         """

23         启动浏览器

24         :param url: 测试地址

25         :param driver_name: 在启动时设置浏览器的类型

26         :return:

27         """

28         if driver_name == "Firefox":

29             self.driver = webdriver.Firefox()

30         elif driver_name == "Ie":

31             self.driver = webdriver.Ie()

32         else:

33             self.driver = webdriver.Chrome()

34         self.driver.implicitly_wait(OVER_TIME)

35         self.driver.get(url)

36         self.driver.maximize_window()

37

38     def get_url(self):

39         """返回浏览器的地址"""

40         return BASE_URL

41

42     def find_element(self, by, value):

43         """

44         这里添加了一个OVER_TIME作为查找元素的超时次数,根据系统的实际情况设置OVER_TIME的大小

45         """

46         for i in range(OVER_TIME):

47             try:

48                 return self.driver.find_element(by=by, value=value)

49             except Exception, e:

50                 print e

51

52     def find_elements(self, by, value):

53         """与find_element一致"""

54         for i in range(OVER_TIME):

55             try:

56                 return self.driver.find_elements(by=by, value=value)

57             except Exception, e:

58                 print e

59

60     def find_display_elements(self, by, value):

61         """

62         查找状态为displayed的元素集合,当查找一类元素时,

63         经常出现有些元素是不可见的情况,此函数屏蔽那些不可见的元素

64         """

65         for i in range(OVER_TIME):

66             try:

67                 elements = self.driver.find_elements(by=by, value=value)

68                 num = elements.__len__()

69             except Exception, e:

70                 print e

71                 time.sleep(1)

72             if num >= 1:

73                 break

74         display_element = []

75         # 将可见的元素放到列表中, 并返回

76         for j in range(num):

77             element = elements.__getitem__(j)

78             if element.is_displayed():

79                 display_element.append(element)

80         return display_element

81

82     def is_element_present(self, By, Value):

83         """判断元素是否存在"""

84         try:

85             self.driver.find_element(by=By, value=Value)

86             return True

87         except Exception, e:

88             print e

89             return False

90

91     def close(self):

92         self.driver.close()

93

94     def quit(self):

95         u"""退出浏览器"""

96         self.driver.quit()

97

98 if __name__ == "__main__":

99     page = Driver()

100     page.start()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium是一种自动化测试工具,可以用于测试Web应用程序的功能和UI。在使用Selenium进行Web自动化测试时,我们通常需要编写一些重复性的代码,如定位元素、输入文本、点击按钮等。为了提高代码的可读性和可维护性,我们可以将这些重复性的代码封装成函数或类。 以下是一个简单的Selenium封装示例: ```python from selenium import webdriver class SeleniumTest: def __init__(self, url): self.driver = webdriver.Chrome() self.driver.get(url) def find_element_by_id(self, element_id): return self.driver.find_element_by_id(element_id) def find_element_by_name(self, element_name): return self.driver.find_element_by_name(element_name) def find_element_by_xpath(self, xpath): return self.driver.find_element_by_xpath(xpath) def input_text(self, element, text): element.clear() element.send_keys(text) def click_button(self, element): element.click() def close(self): self.driver.close() ``` 在上面的代码中,我们定义了一个SeleniumTest类,该类包含了常用的元素定位方法和操作方法。我们可以通过实例化该类来进行Web自动化测试,例如: ```python test = SeleniumTest('https://www.baidu.com') search_box = test.find_element_by_id('kw') test.input_text(search_box, 'Selenium') search_button = test.find_element_by_xpath('//*[@id="su"]') test.click_button(search_button) test.close() ``` 在上面的示例中,我们首先实例化了SeleniumTest类,并指定了要测试的网址。然后,我们使用find_element_by_id方法找到搜索框元素,并使用input_text方法输入文本。接着,我们使用find_element_by_xpath方法找到搜索按钮元素,并使用click_button方法点击该按钮。最后,我们使用close方法关闭浏览器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值