zoukankan      html  css  js  c++  java
  • UI自动化的API总结

    断言:assert 1 == 2
    unittest里的断言:assertEqual(title, u"百度一下,你就知道", "页面title属性值错误!")
    前进:driver.forward()
    后退:driver.back()
    刷新:driver.refresh()
    最大化:driver.maximize_window()
    获取坐标:driver.get_window_position()
    缩放窗体:driver.set_window_size(width = 200, height = 400, windowHandle='current')
    获取窗体大小信息:driver.get_window_size(windowHandle='current')
    获取标题栏:driver.title
    获取源码:driver.page_source
    获取当前页的url:driver.current_url
    获取当前窗口句柄:driver.current_window_handle
    获取所有窗口句柄:driver.window_handles
    切换窗口:driver.switch_to.window(handle)
    获取元素的标签名:newsElement.tag_name
    获取元素的size:newsElement.size
    获取元素的文本:newsElement.text
    获取元素的链接:newsElement.get_attribute("href")
    获取元素的链接:newsElement.get_property("href")
    判断元素是否可见:div2.is_displayed()
    JavaScript代码操作设置元素是否可见:driver.execute_script("document.getElementById('input2').disabled=false;")
    获取输入框:searchBoxElement.get_attribute("value")或者searchBox.get_attribute("name")
    获取样式表内容:searchBoxElement.value_of_css_property("font-family")
    清除输入:
    inputElement = self.driver.find_element_by_id("kw")
    inputElement.send_keys(u"自动化测试")
    inputElement.clear()
    拟鼠标左键单击操作:
    buttonElement = self.driver.find_element_by_id("button")
    buttonElement.click()
    模拟鼠标双击操作:
    action_chains = ActionChains(self.driver)
    action_chains.double_click(inputBox).perform()
    select的操作-文本:
    select = self.driver.find_element_by_name("fruit")
    all_options = select.find_elements_by_tag_name("option")
    for option in all_options:
    print(u"选项显示的文本:", option.text)
    print(u"选项值为:", option.get_attribute("value"))
    option.click()
    select的操作-通过序号选择:select_element.select_by_index(1)
    select的操作-通过选项的显示文本选择:select_element.select_by_visible_text("猕猴桃")
    select的操作-通过选项的value属性值:select_element.select_by_value("shanzha")
    默认选中项的文本:
    select_element = Select(self.driver.find_element_by_xpath("//select"))
    select_element.first_selected_option.text
    获取所有选择项的页面元素对象:
    select_element = Select(self.driver.find_element_by_xpath("//select"))
    select_element.options
    所有的选中项文本:
    for option in select_element.all_selected_options:
    print(option.text)
    取消所有已选中项:select_element.deselect_all()
    选框被成功选:berryRadioElement.is_selected()
    断言下拉列表是否被选中:assertListEqual(expect_optionsList, actual_optionsList)
    断言复选框没被选中:assertFalse(berryRadio.is_selected())
    断言复选框:assertEqual(radio.get_attribute("value"), "orange")
    断言页面是否存在某些关键字:assert u"首页" in self.driver.page_source, u"页面源码中不存在该关键字!"
    浏览器截屏:driver.get_screenshot_as_file(r"e:screenPicture.png")
    操作系统的截屏:
    from PIL import ImageGrab
    im=ImageGrab.grab()
    按时间创建文件夹并按时间命名存储截屏:
    dir_name=time.strftime("%Y-%m-%d",time.localtime())
    if not os.path.exists("e:\"+dir_name):
    os.mkdir("e:\"+dir_name)
    driver = webdriver.Chrome()
    os.chdir("e:\"+dir_name)
    for url in urls:
    driver.get(url)
    拖拽元素:
    from selenium.webdriver import ActionChains
    action_chains = ActionChains(self.driver)
    action_chains.drag_and_drop(initialPositionElement, targetPositionElement).perform()
    for i in range(5):
    action_chains.drag_and_drop_by_offset(dragElement, 10, 10).perform()
    driver.get_screenshot_as_file(time.strftime("%H-%M-%S",time.localtime())+".png")
    模拟键盘操作:
    from selenium.webdriver.common.keys import Keys
    query = self.driver.find_element_by_id("query")
    query.send_keys(Keys.F12)
    query.send_keys("selenium")
    query.send_keys(Keys.ENTER)
    剪切板操作:
    import win32clipboard as w
    import win32con
    import time
    import win32api
    # 读取剪切板
    def getText():
    w.OpenClipboard()
    d = w.GetClipboardData(win32con.CF_TEXT)
    w.CloseClipboard()
    return d
    # 设置剪切板内容
    def setText(aString):
    w.OpenClipboard()
    w.EmptyClipboard()
    w.SetClipboardData(win32con.CF_UNICODETEXT, aString)
    w.CloseClipboard()

    VK_CODE = {
    'enter': 0x0D,
    'ctrl': 0x11,
    'a': 0x41,
    'v': 0x56,
    'x': 0x58
    }


    # 键盘键按下
    def keyDown(keyName):
    win32api.keybd_event(VK_CODE[keyName], 0, 0, 0)


    # 键盘键抬起
    def keyUp(keyName):
    win32api.keybd_event(VK_CODE[keyName], 0, win32con.KEYEVENTF_KEYUP, 0)

    模拟鼠标滚动

    for i in range(1, 1500):
    win32api.mouse_event(win32con.MOUSEEVENTF_WHEEL, 0, 0, -1)


    键盘码:
    '''
    VK_CODE = {
    'backspace': 0x08,
    'tab': 0x09,
    'clear': 0x0C,
    'enter': 0x0D,
    'shift': 0x10,
    'ctrl': 0x11,
    'alt': 0x12,
    'pause': 0x13,
    'caps_lock': 0x14,
    'esc': 0x1B,
    'spacebar': 0x20,
    'page_up': 0x21,
    'page_down': 0x22,
    'end': 0x23,
    'home': 0x24,
    'left_arrow': 0x25,
    'up_arrow': 0x26,
    'right_arrow': 0x27,
    'down_arrow': 0x28,
    'select': 0x29,
    'print': 0x2A,
    'execute': 0x2B,
    'print_screen': 0x2C,
    'ins': 0x2D,
    'del': 0x2E,
    'help': 0x2F,
    '0': 0x30,
    '1': 0x31,
    '2': 0x32,
    '3': 0x33,
    '4': 0x34,
    '5': 0x35,
    '6': 0x36,
    '7': 0x37,
    '8': 0x38,
    '9': 0x39,
    'a': 0x41,
    'b': 0x42,
    'c': 0x43,
    'd': 0x44,
    'e': 0x45,
    'f': 0x46,
    'g': 0x47,
    'h': 0x48,
    'i': 0x49,
    'j': 0x4A,
    'k': 0x4B,
    'l': 0x4C,
    'm': 0x4D,
    'n': 0x4E,
    'o': 0x4F,
    'p': 0x50,
    'q': 0x51,
    'r': 0x52,
    's': 0x53,
    't': 0x54,
    'u': 0x55,
    'v': 0x56,
    'w': 0x57,
    'x': 0x58,
    'y': 0x59,
    'z': 0x5A,
    'numpad_0': 0x60,
    'numpad_1': 0x61,
    'numpad_2': 0x62,
    'numpad_3': 0x63,
    'numpad_4': 0x64,
    'numpad_5': 0x65,
    'numpad_6': 0x66,
    'numpad_7': 0x67,
    'numpad_8': 0x68,
    'numpad_9': 0x69,
    'multiply_key': 0x6A,
    'add_key': 0x6B,
    'separator_key': 0x6C,
    'subtract_key': 0x6D,
    'decimal_key': 0x6E,
    'divide_key': 0x6F,
    'F1': 0x70,
    'F2': 0x71,
    'F3': 0x72,
    'F4': 0x73,
    'F5': 0x74,
    'F6': 0x75,
    'F7': 0x76,
    'F8': 0x77,
    'F9': 0x78,
    'F10': 0x79,
    'F11': 0x7A,
    'F12': 0x7B,
    'F13': 0x7C,
    'F14': 0x7D,
    'F15': 0x7E,
    'F16': 0x7F,
    'F17': 0x80,
    'F18': 0x81,
    'F19': 0x82,
    'F20': 0x83,
    'F21': 0x84,
    'F22': 0x85,
    'F23': 0x86,
    'F24': 0x87,
    'num_lock': 0x90,
    'scroll_lock': 0x91,
    'left_shift': 0xA0,
    'right_shift ': 0xA1,
    'left_control': 0xA2,
    'right_control': 0xA3,
    'left_menu': 0xA4,
    'right_menu': 0xA5,
    'browser_back': 0xA6,
    'browser_forward': 0xA7,
    'browser_refresh': 0xA8,
    'browser_stop': 0xA9,
    'browser_search': 0xAA,
    'browser_favorites': 0xAB,
    'browser_start_and_home': 0xAC,
    'volume_mute': 0xAD,
    'volume_Down': 0xAE,
    'volume_up': 0xAF,
    'next_track': 0xB0,
    'previous_track': 0xB1,
    'stop_media': 0xB2,
    'play/pause_media': 0xB3,
    'start_mail': 0xB4,
    'select_media': 0xB5,
    'start_application_1': 0xB6,
    'start_application_2': 0xB7,
    'attn_key': 0xF6,
    'crsel_key': 0xF7,
    'exsel_key': 0xF8,
    'play_key': 0xFA,
    'zoom_key': 0xFB,
    'clear_key': 0xFE,
    '+': 0xBB,
    ',': 0xBC,
    '-': 0xBD,
    '.': 0xBE,
    '/': 0xBF,
    '`': 0xC0,
    ';': 0xBA,
    '[': 0xDB,
    '\': 0xDC,
    ']': 0xDD,
    "'": 0xDE,
    '`': 0xC0
    }
    '''
    鼠标右键点击操作:ActionChains(self.driver).context_click(searchBox).perform()
    元素上执行按下鼠标左键:

    ActionChains(self.driver).click_and_hold(div).perform()

    或者

    ActionChains(self.driver).click(div).perform()
    将鼠标悬浮到第一个链接元素上:

    ActionChains(self.driver).move_to_element(link1).perform()  #悬浮到A

    find_element(driver,By.LINK_TEXT,"关联案件").click()  #点击B
    异常处理:
    try:
    element = self.driver.find_element(by=by, value=value)
    except NoSuchElementException as e:
    # 打印异常信息
    print(e)
    # 发生了NoSuchElementException异常,说明页面中未找到该元素,返回False
    return False
    else:
    # 没有发生异常,表示在页面中找到了该元素,返回True
    return True

    隐式等待:driver.implicitly_wait(10) #对所有元素有效
    显示等待-是否可见:
    def visibility(webelement):
    wait = WebDriverWait(driver, 10, 0.2)
    wait.until(EC.visibility_of(webelement))
    显示等待-是否可点击:
    def clickable(by, locator_path):
    wait = WebDriverWait(driver, 10, 0.2)
    element = wait.until(EC.element_to_be_clickable((by, locator_path)))
    return element
    显示等待-ALTER弹窗:
    wait = WebDriverWait(self.driver, 10, 0.2)
    alert = wait.until(EC.alert_is_present())
    返回之前的iframe页面:driver.switch_to.default_content()
    进入该frame方法1:driver.switch_to.frame(self.driver.find_elements_by_tag_name("frame")[1])
    进入该frame方法2:driver.switch_to.frame(self.driver.find_element_by_id("rightframe"))
    进入该frame方法3:driver.switch_to.frame("rightframe")
    进入该frame方法4:driver.switch_to.frame(0)
    获取alert对象:driver.switch_to.alert
    confirm窗的确定:alert.accept()
    confirm窗的取消:alert.dismiss()
    prompt窗体的输入框中输入:alert.send_keys(u"光荣之路:要想改变命运,必须每天学习2小时!")
    当前页面下所有的Cookies:driver.get_cookies()
    删除name值为“ABTEST”的Cookie信息:driver.delete_cookie("ABTEST")
    删除全部Cookie信息:driver.delete_all_cookies()
    添加自定义Cookie信息:driver.add_cookie({"name": "gloryroadTrain", 'value': '1479697159269020'})
    设定页面加载限制时间:driver.set_page_load_timeout(10)
    JavaScript代码操作点击按钮:driver.execute_script(searchButtonJS)
    JavaScript代码操作滚动条滑动到页面的最下方:driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    JavaScript代码操作滚动横轴的一半坐标:driver.execute_script("document.getElementsByTagName('a')[500].scrollIntoView(true);")
    JavaScript代码操作向下滚动400像素:driver.execute_script("window.scrollBy (0,400);")
    模拟键盘点击下箭头:
    for i in range(3):
    # 选择悬浮框中中第几个联想关键词选项就循环几次
    # 模拟键盘点击下箭头
    searchBox.send_keys(Keys.DOWN)
    time.sleep(0.5)
    杀掉浏览器进程:os.system("taskkill /F /iM chrome.exe")

    键盘操作:
    导入Keys:from selenium.webdriver.common.keys import Keys
    回车:element.send_keys(Keys.ENTER)
    清理:element.clear()
    上:element.send_keys(Keys.ARROW_UP)
    下:element.send_keys(Keys.ARROW_DOWN)
    左:element.send_keys(Keys.ARROW_LEFT)
    右:element.send_keys(Keys.ARROW_RIGHT)

    向下:ActionChains(driver).send_keys(Keys.DOWN).perform()
    回车:ActionChains(driver).send_keys(Keys.ENTER).perform()

    操作隐藏元素:
    方法1:
    js = ’document.querySelectorAll("select")[0].style.display="block";’
    方法2:
    js = "document.getElementById("txtPassword").style.display='block';"
    其他方法:
    (getElementById():返回对指定ID第一个对象的引用
    getElementsByName() :返回带有指定名称的对象集合
    getElementsByTagName():返回带有指定标签名的对象集合)
    # 调用js脚本
    driver.execute_script(js)
    sleep(3)
    driver.find_element_by_id("txtPassword").send_keys("123456")

     

     

    随机获取select下的值:

    方法1:

    select = browser.find_element_by_xpath("//form[@class='searchFrom']/div[6]/select")
    options_list = select.find_elements_by_tag_name("option")
    project = random.choice(options_list).get_attribute("value")
    print(project)

    方法2:

    select = Select(browser.find_element_by_xpath("//form[@class='searchFrom']/div[6]/select"))
    print(random.choice(select.options).get_attribute("value"))


    一切技术都是为业务服务,脱离业务的技术一文不值!

  • 相关阅读:
    SQL语句执行效率及分析(note)
    双重检查锁定及单例模式
    可定制生命周期的缓存
    php CI框架高级视图功能,视图继承,多重继承,视图片段
    php 使用pdo连接postgresql
    python 学习整理
    phpmailer 发送邮件
    php syslog记录系统日志
    php 学习整理
    php 生成唯一id方法
  • 原文地址:https://www.cnblogs.com/bubutianshu/p/11179526.html
Copyright © 2011-2022 走看看