分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

selenium-webdriver的二次封装(十)

发布时间:2023-09-06 02:32责任编辑:沈小雨关键词:selenium

接着上篇随笔 selenium-配置文件定位元素 ,进行了配置文件设置后,将配置文件运用到定位元素中

思路:拿到定位的 key 和 value 后,对 webdrvier 中定位进行封装,使可以直接运用

主要的8种定位方法:  

  • find_element_by_id   
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector
# conding=utf-8from selenium import webdriverfrom auto_learning.config import ReadIni #导入读取的配置文件的py文件,如果不能导入检查是否是包(__init__.py文件存在 )文件class FindElement(object): ???def __init__(self,driver): ???????self.driver = driver ???def get_Element(self,pageElement,key): ???????# 实例化ReadIni ???????file_name = ‘../config/BaiduElement.ini‘ ???????read_ini = ReadIni.ReadIni(file_name) ???????key_value = read_ini.get_value(pageElement,key) ???????key = key_value.split(‘:‘)[0] ???????value = key_value.split(‘:‘)[1] ???????try: ???????????if key == ‘id‘: ???????????????return self.driver.find_element_by_id(value) ???????????elif key == ‘class‘: ???????????????return self.driver.find_element_by_class_name(value) ???????????elif key == ‘name‘: ???????????????return self.driver.find_element_by_name(value) ???????????elif key == ‘tag‘: ???????????????return self.driver.find_element_by_tag_name(value) ???????????elif key == ‘linkText‘: ???????????????return self.driver.find_element_by_link_text(value) ???????????elif key == ‘cssSelector‘: ???????????????return self.driver.find_element_by_css_selector(value) ???????????elif key == ‘xpath‘: ???????????????return self.driver.find_element_by_xpath(value) ???????except: ???????????return None

由于浏览器有好多种,所以也需要重新定义浏览器的启动

对构造函数进行修改

 ???def __init__(self,driverName): ???????try: ???????????if driverName == ‘chrome‘: ???????????????self.driver = webdriver.Chrome() ???????????elif driverName == ‘dege‘: ???????????????self.driver = webdriver.Edge() ???????????elif driverName == ‘firefox‘: ???????????????self.driver = webdriver.Firefox() ???????????elif driverName == ‘safari‘: ???????????????self.driver = webdriver.Safari() ???????except: ???????????error_message = "find not " + driverName ???????????print(error_message) ???????self.driver.maximize_window() ???????url = ‘https://www.baidu.com‘ ???????self.driver.get(url)

在项目中如果用单一浏览器可能会造成堵塞

所以就需要多个浏览器同时跑脚本,不至于一个浏览器的压力太大

# conding=utf-8from selenium import webdriverimport timefrom auto_learning.config import ReadIni #导入读取的配置文件的py文件,如果不能导入检查是否是包(__init__.py文件存在 )文件class FindElement(object): ???def __init__(self,i): ???????self.driver = self.get_driver(i) ???????time.sleep(3) ???????url = ‘https://www.baidu.com‘ ???????self.driver.get(url) ???????self.driver.maximize_window() ???def get_driver(self,i): ???????if i == 0: ???????????return webdriver.Chrome() ???????elif i == 1: ???????????return webdriver.Edge() ???????elif i == 2: ???????????return webdriver.Firefox() ???????elif i == 3: ???????????return webdriver.Safari() ???def get_Element(self,pageElement,key): ???????# 实例化ReadIni ???????file_name = ‘../config/BaiduElement.ini‘ ???????read_ini = ReadIni.ReadIni(file_name) ???????key_value = read_ini.get_value(pageElement,key) ???????key = key_value.split(‘:‘)[0] ???????value = key_value.split(‘:‘)[1] ???????try: ???????????if key == ‘id‘: ???????????????return self.driver.find_element_by_id(value) ???????????elif key == ‘class‘: ???????????????return self.driver.find_element_by_class_name(value) ???????????elif key == ‘name‘: ???????????????return self.driver.find_element_by_name(value) ???????????elif key == ‘tag‘: ???????????????return self.driver.find_element_by_tag_name(value) ???????????elif key == ‘linkText‘: ???????????????return self.driver.find_element_by_link_text(value) ???????????elif key == ‘cssSelector‘: ???????????????return self.driver.find_element_by_css_selector(value) ???????????elif key == ‘xpath‘: ???????????????return self.driver.find_element_by_xpath(value) ???????except: ???????????return Noneif __name__ == ‘__main__‘: ???for i in range(3): ???????findElement = FindElement(i) ???????input_text = findElement.get_Element(‘BaiduHomeElement‘,‘baidu_search_input‘)

selenium-webdriver的二次封装(十)

原文地址:https://www.cnblogs.com/tynam/p/10351860.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved