这是一个用来更新公园信息的数据管理系统,而截图这个页面主要是用来更新site信息的,幸运的是这个页面的每个元素都可以用ID来定位。其中包含三种形式的信息:文本框,下拉列表和复选按钮。我的实现思路是把ID对应定位信息放在excel表格里,通过抓取excel表里提供的定位信息和所对应的需要更新的值进行数据更新。
这里分别对文本框信息输入,下拉列表选择和复选按钮勾选做了封装处理,再把相应的方法统一放到update方法来实现。这样就不需要再对每个字段进行单独处理了。
封装代码:
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException, TimeoutException
import traceback
import time
class BasePage:
def __init__(self, driver):
self.driver = driver
# 对查找单个页面元素进行封装。
def find_element(self, by, locator):
by = by.lower()
element = None
if by in ['id', 'name', 'xpath', 'class', 'tag', 'link', 'plink']:
try:
if by == 'id':
element = self.driver.find_element_by_id(locator)
elif by == 'name':
element = self.driver.find_element_by_name(locator)
elif by == 'xpath':
element = self.driver.find_element_by_xpath(locator)
elif by == 'class':
element = self.driver.find_element_by_class_name(locator)
elif by == 'tag':
element = self.driver.find_element_by_tag_name(locator)
elif by == 'link':
element = self.driver.find_element_by_link_text(locator)
elif by == 'plink':
element = self.driver.find_element_by_partial_link_text(locator)
else:
print('Not find the element "{}"!'.format(locator))
return element
except NoSuchElementException as e:
print(traceback.print_exc())
else:
print('Provided a wrong locator "{}"!'.format(locator))
# 对查找多个页面元素进行封装。
def find_elements(self, by, locator):
by = by.lower()
elements = None
if