前言:selenium模块是用来做UI自动化,模拟浏览器操作
1、安装:
终端安装:pip install selenium
编译器安装:File->Settings->Project:文件名称->Project lnterpreter
2、导入模块:
from selenium import webdriver
3、操作浏览器
from Common.read_ini import ReaDconfigurationFile from selenium.webdriver.common.action_chains import ActionChains import time from PIL import Image from selenium import webdriver import time import os class FindElement(): def __init__(self): self.read = ReaDconfigurationFile() # if bdriver == 'chrome': # self.driver = webdriver.Chrome() # if bdriver == 'firefox': # self.driver = webdriver.Firefox() # if bdriver =='ie': # self.driver = webdriver.Ie() # return None # 打开浏览器 def get_bdriwer(self,bdriver): if bdriver == 'chrome': self.driver = webdriver.Chrome() if bdriver == 'firefox': self.driver = webdriver.Firefox() if bdriver =='ie': self.driver = webdriver.Ie() return None #进入指定的url def get_to_url(self,url): self.driver.get(url) #验证元素是否存在 def get_element(self,keys): data = self.read.obtain_ini_value(keys) by = data.split(':')[0] key = data.split(":")[1] try: if by=='id': return self.driver.find_element_by_id(key) elif by=='name': return self.driver.find_element_by_name(key) elif by=='class_name': return self.driver.find_element_by_class_name(key) elif by=='link_text': return self.driver.find_element_by_link_text(key) elif by=='partial_link_text': return self.driver.find_element_by_partial_link_text(key) elif by=='xpath': return self.driver.find_element_by_xpath(key) elif by=='css_selector': return self.driver.find_element_by_css_selector(key) except: return None #输入事件 def input_event(self,key,content,): return self.get_element(key).send_keys(content) # #点击事件 def click_event(self,keys): return self.get_element(keys).click() #获取文字信息 def text_info(self,keys,keyss): return self.get_element(keys).get_attribute(keyss) #获取浏览器title def get_title_text(self): return self.driver.title #清除输入框内容 def clear_content(self,keys): return self.get_element(keys).clear() #获得下来框文本的值 def get_text(self,keys): return self.get_element(keys).text # #鼠标移动到某个元素上面 def mobile_mouse(self,keys): Action = ActionChains(self.driver) move_mouse = self.get_element(keys) return Action.move_to_element(move_mouse) #拖拽 def drag_and_drop(self,keys,keyss): Action = ActionChains(self.driver) element = self.get_element(keys) aims = self.get_element(keyss) return Action.drag_and_drop(element,aims).perform() #self.Action.click_and_hold(element).move_to_element(aims).perform() #浏览器前进操作 def webdriver_go_ahead(self): return self.driver.forward() #浏览器后退操作 def webdriver_back(self): return self.driver.back() #切换到系统弹框 #点击确认按钮 def switch_to_confirm(self): return self.driver.switch_to_alert().accept() # 切换到系统弹框 # 点击确认按钮 def switch_to_cancel(self): return self.driver.switch_to_alert().dismiss() # 切换到系统弹框 # 点击输入文本内容 def switch_to_input(self,content): return self.driver.switch_to_alert().send_keys(content) #切换到系统弹窗 #获取文本内容 def pop_text_info(self): return self.driver.switch_to_alert().text #关闭浏览器 def close_driver(self): return self.driver.close() #截图保存图片 def screenshot(self,file_name): file = file_name return self.driver.save_screenshot(file) #裁剪验证码图片 def crop_Image(self,file_name,keys): #保存图片 self.screenshot(file_name) #定位到图片位置 images = self.get_element(keys) #定位四个点 left = images.location['x'] # 上 top = images.location['y'] # 下 right = images.size['width'] + left # 右 height = images.size['height'] + top # 左 #打开图片 im = Image.open(file_name) #裁剪图片 img = im.crop(left,top,right,height) #保存图片 img.save(file_name) #获取页面所有的handle def extract_handle(self): return self.driver.window_handles() #进入指定的handle页面 def get_to_page(self,key): return self.driver.switch_to_window(key) #等待时间 def wait_time(self,second): return time.sleep(second) if __name__ == '__main__': fe = FindElement('chrome') fe.get_to_url( 'https://passport.58.com/login/?path=https%3A//wh.58.com/%3Futm_source%3Dmarket%26spm%3Du-2d2yxv86y3v43nkddh1.BDPCPZ_BT&PGTID=0d100000-0009-e0b9-7ab5-9885257cdd77&ClickID=2' ) fe.click_event('error_message') time.sleep(3) fe.input_event('username','123456')