1、为避免代码冗余,把selenium的部分操作简单的封装起来,封装起来后,一些需要几步才能完成的动作只需要一步即可
浏览器的开启关闭封装
访问地址(访问后默认隐式等待)封装
定位方式的封装
单击操作封装
输入框输入封装
获取指定元素的文本内容封装
from selenium import webdriver import time # 定义一个封装selenium 的各种方法的类(方便以面向对象的方式写脚本) class My_se_package(object): # 构造方法 def __init__(self,brower): '''初始化浏览器对象''' # 根据传入的参数创建对应的浏览器对象(相关浏览器已正确安装驱动) if brower == 'Firefox': # 创建浏览器 self.driver = webdriver.Firefox() elif brower == 'Chrome': self.driver = webdriver.Chrome() # 默认最大化 self.driver.maximize_window() # 访问地址 def open_url(self,url): # 访问url self.driver.get(url) # 默认隐式等待10 self.driver.implicitly_wait(10) # 封装八种定位方式 def element_location(self,locate_type,locate_value): el = None if locate_type == 'id': el = self.driver.find_element_by_id(locate_value) elif locate_type == 'name': el = self.driver.find_element_by_name(locate_value) elif locate_type == 'class_name': el = self.driver.find_element_by_class_name(locate_value) elif locate_type == 'tag_name': el = self.driver.find_element_by_tag_name(locate_value) elif locate_type == 'link_text': el = self.driver.find_element_by_link_text(locate_value) elif locate_type == 'partial_link_text': el = self.driver.find_element_by_partial_link_text(locate_value) elif locate_type == 'xpath': el = self.driver.find_element_by_xpath(locate_value) elif locate_type == 'css': el = self.driver.find_element_by_css_selector(locate_value) # 如果el不为None,则返回 if el is not None: return el # 指定某一个元素进行点击操作 def click_element(self,locate_type,locate_value): # 调用定位方法,定位指定的元素 el = self.element_location(locate_type,locate_value) # 点击操作 el.click() time.sleep(1) # 指定元素进行输入 def input_element(self,locate_type,locate_value,input_value): # 调用定位方法,指定元素进行定位 el = self.element_location(locate_type,locate_value) # 输入操作 el.send_keys(input_value) time.sleep(1) # 获取指定元素的文本内容 def text_element(self,locate_type,locate_value): # 调用定位方法定位指定元素 el = self.element_location(locate_type,locate_value) # 获取文本内容 return el.text # 关闭本脚本打开的窗口 def close_brower(self): # 关闭所有本脚本打开的窗口 self.driver.quit() # 结束时自动清理所有变量,关闭所有窗口 def __del__(self): # 关闭浏览器 time.sleep(2) self.driver.quit() if __name__ == '__main__': b = My_se_package('Firefox') b.open_url('http://www.baidu.com') # b.open_url('https://www.jd.com/') b.input_element('id','kw','英雄') b.click_element('id','su') b.driver.back() print(b.text_element('css','li.hotsearch-item:nth-child(2) > a:nth-child(1) > span:nth-child(2)')) print(b.driver.get_window_size())