zoukankan      html  css  js  c++  java
  • webdriver+expected_conditions二次封装

    结合这两种方法对代码做二次封装,可以提升脚本性能

    例:

    #coding:utf-8

    #封装元素方法
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.common.exceptions import *
    from selenium.webdriver.support import expected_conditions as EC
    import time
    #加入下面三行代码 在python2中就不会出现乱码问题
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')

    class Base():
    def __init__(self,driver):
    self.driver=driver

    #查找元素
    def find_element(self,locator):#locator参数是定位方式,如("id", "kw"),把两个参数合并为一个 ,*号是把两个参数分开传值
    element=WebDriverWait(self.driver,20,0.5).until(lambda x:x.find_element(*locator))
    print(element)
    return element
    #判断元素文本
    def is_text_in_element(self,locator,text):
    try:
    WebDriverWait(self.driver,20,0.5).until(EC.text_to_be_present_in_element(locator,text))
    return True
    except TimeoutException:
    return False
    #判断元素的value属性
    def is_value_element(self,locator,text):
    try:
    WebDriverWait(self.driver,20,0.5).until(EC.text_to_be_present_in_element_value(locator,text))
    return True
    except:
    return False

    #判断元素是否被定位到
    def is_exists(self,locator):
    try:
    WebDriverWait(self.driver,20,0.5).until(EC.presence_of_element_located(locator))#不需要*,这里跟*locator不是一个参数
    return True
    except:
    return False
    #判断元素是否已经不存在,不存在了返回True,还存在就返回False
    def element_is_disappeared(self,locator,timeout=30):
    is_disappeared=WebDriverWait(self.driver,timeout,1,(ElementNotVisibleException)).until_not(lambda x:x.find_element(*locator).is_displayed())
    print is_disappeared

    #封装一个send_keys
    def send_keys(self,locator,text):
    self.find_element(locator).send_keys(text)

    #封装一个click
    def click(self,locator):
    self.find_element(locator).click()
    # #封装一个text
    # def get_text(self,locator,text):
    # return self.find_element(locator,text).text

    #运行主函数
    if __name__=='__main__':
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    #实例化
    base=Base(driver)
    #定位输入框
    input_loc=("id","kw")
    #通过实例调用find_element来发送
    base.send_keys(input_loc,"selenium")
    #点击按钮
    button=("css selector","#su")
    base.click(button)
    print base.is_text_in_element(("link text", "地图"), "地图")
    time.sleep(3)
    driver.quit()

  • 相关阅读:
    第三方支付——支付宝支付
    使用Ansible自动配置Nginx服务
    使用Ansible自动配置JDK环境
    mycat 生产环境 cpu 占用 800% 问题 Mycat调优启用useOffHeapForMerge报java.lang.NumberFormatException异常解决(附源码)
    es 备份 恢复
    修改es 副本数 replicas
    Java压缩流GZIPStream导致的内存泄露
    java 堆外内存泄漏 排查
    Linux下查看某一进程所占用内存的方法(转)
    jmap -histo java内存泄漏排查 -XX:MaxDirectMemorySize=2G
  • 原文地址:https://www.cnblogs.com/linbao/p/8082254.html
Copyright © 2011-2022 走看看