我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

selenium-贺威栋-2021.02.28

[复制链接]
I5029学员认证 发表于 2021-2-28 18:06:49 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

'''
utility 工具
'''
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from time import sleep
class BoxDriver:
    def __init__(self,url,browser='Chrome'):
        '''
        browser浏览器类型
        '''
        if browser == 'Chrome':
            self.driver = webdriver.Chrome()
        elif browser == 'Firefox':
            self.driver = webdriver.Firefox()
        elif browser == 'IE':
            self.driver = webdriver.IE()
        self.driver.implicitly_wait(10)
        self.driver.maximize_window()
        self.driver.get(url)
    def get(self, url):
        '''
        url 网页地址
        '''
        self.driver.get(url)
    def maximize_window(self):
        '''
        窗口最大化
        '''
        self.driver.maximize_window()
    def minimize_window(self):
        '''
        窗口最小化
        '''
        self.driver.minimize_window()
    def wait(self,second):
        '''
        休眠
        second      休眠时间,单位秒
        '''
        sleep(second)
    def webdriver_wait(self):
        '''
        显示等待
        '''
    def implicitly_wait(self,second=10):
        '''
        隐式等待
        second 最大等待时间
        '''
        self.driver.implicitly_wait(second)
    def convert_selector_to_locator(self,selector):
        '''
        将自定义的定位方式转换为selenium的标准定位方式
        'id account' -->  By.ID, 'account'
        '''
        # 定位方式
        by = selector.split(' ')[0]    # 分割字符串
        # 定位值
        value = selector.split(' ')[1]
        if by == 'id' or by == 'i':
            locator = (By.ID,value)
        elif by == 'name' or by == 'n':
            locator = (By.NAME, value)
        elif by == 'class' or by == 'c':
            locator = (By.CLASS_NAME, value)
        elif by == 'link_text' or by == 'l':
            locator = (By.LINK_TEXT, value)
        elif by == 'partial_link_text' or by == 'p':
            locator = (By.PARTIAL_LINK_TEXT, value)
        elif by == 'tag_name' or by == 't':
            locator = (By.TAG_NAME, value)
        elif by == 'xpath' or by == 'x':
            locator = (By.XPATH, value)
        elif by == 'css_selector' or by == 'css':
            locator = (By.CSS_SELECTOR, value)
        return locator
    def locate_element(self,selector):
        '''
        定位单个元素
        selector    自定义定位方式
        '''
        locator = self.convert_selector_to_locator(selector)
        return self.driver.find_element(*locator)
    def locate_elements(self,selector):
        '''
        定位单个元素
        selector    自定义定位方式
        '''
        locator = self.convert_selector_to_locator(selector)
        return self.driver.find_elements(*locator)
    def input(self,selector,keyword):
        '''
        向元素中写入文本
        selector        自定义定位方式
        keyword         要写入的文本
        '''
        self.locate_element(selector).send_keys(keyword)
    def click(self,selector):
        '''
        单击元素
        selector        自定义定位方式
        '''
        self.locate_element(selector).click()
    def switch_to_frame(self,selector):
        '''
        进入frame
        selector        自定义定位方式
        '''
        iframe = self.locate_element(selector)
        self.driver.switch_to_frame(iframe)
    def select_by_index(self,selector,index):
        '''
        根据index选择
        index               下标
        selector            自定义定位方式
        '''
        select = self.locate_element(selector)
        options = Select(select)
        options.select_by_index(index)
    def select_by_value(self,selector,value):
        '''
        根据value选择
        value               value属性的值
        selector            自定义定位方式
        '''
        select = self.locate_element(selector)
        options = Select(select)
        options.select_by_value(value)
    def select_by_visible_text(self,selector,text)
        根据选择
        text                文本的值
        selector            自定义定位方式
        '''
        select = self.locate_element(selector)
        options = Select(select)
        options.select_by_visible_text(text)
    def quit(self):
        '''
        退出浏览器
        '''
        self.driver.quit()
    def close(self):
        '''
        关闭当前页
        '''
        self.driver.close()
class BasePage:
    def __init__(self,driver:BoxDriver):
        self.driver = driver
# class GetYaml:
#     def
if __name__ == '__main__':
    BoxDriver()

回复

使用道具 举报

关注0

粉丝0

帖子27

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注软件测试菁英教育

客服电话:17792550360

客服时间:9:00-21:00

卓目鸟学苑 - 专注软件测试菁英教育!( 陕ICP备2025058934号-2 )

版权所有 © 西安菁英教育科技有限公司 2023-2026