Appium python api

根据testerhome的文章,再补充一些文章里面没有提及的API

【1】find element

driver 的方法

注意:这几个方法只能通过self.driver调用

  • find_element_by_android_uiautomator

     def find_element_by_android_uiautomator(self, uia_string):
    """Finds element by uiautomator in Android. :Args:
    - uia_string - The element name in the Android UIAutomator library
    字符串,Uiautomator的代码 :Usage:
    driver.find_element_by_android_uiautomator('.elements()[1].cells()[2]')
    """
  • find_elements_by_android_uiautomator

      def find_elements_by_android_uiautomator(self, uia_string):
    """Finds elements by uiautomator in Android. :Args:
    - uia_string - The element name in the Android UIAutomator library :Usage:
    driver.find_elements_by_android_uiautomator('.elements()[1].cells()[2]')
    """
  • find_element_by_accessibility_id

      find_element_by_accessibility_id(self, id):
    Finds an element by accessibility id.
    通过content-desc查找元素
    :Args:
    - id - a string corresponding to a recursive element search using the
    Id/Name that the native Accessibility options utilize :Usage:
    driver.find_element_by_accessibility_id()
    用法driver.find_element_by_accessibility_id(‘id’)
  • find_elements_by_accessibility_id

      def find_elements_by_accessibility_id(self, id):
    """Finds elements by accessibility id.
    通过content-desc查找元素 :Args:
    - id - a string corresponding to a recursive element search using the
    Id/Name that the native Accessibility options utilize :Usage:
    driver.find_elements_by_accessibility_id()
    """

element的方法

注意:此类方法driver或element均可以调用

element调用时可以用来定位该元素的子元素

  • find_element_by_id

      find_element_by_id(self, id_):
    Finds element within this element's children by ID.
    通过元素的ID定位元素
    :Args:
    - id_ - ID of child element to locate.
    用法 driver. find_element_by_id(“id”)
  • find_elements_by_id

     find_elements_by_id(self, id_):
    
     Finds a list of elements within this element's children by ID.
    通过元素ID定位,含有该属性的所有元素
    :Args:
    - id_ - Id of child element to find.
    用法 driver. find_elements_by_id(“id”)
  • find_element_by_name

      find_element_by_name(self, name):
    
      Finds element within this element's children by name.
    通过元素Name定位(元素的名称属性text或content-desc)
    :Args:
    - name - name property of the element to find.
    用法 driver.find_element_by_name(“name”)
  • find_elements_by_name

      find_elements_by_name(self, name):
    
      Finds a list of elements within this element's children by name.
    通过元素Name定位(元素的名称属性text),含有该属性的所有元素
    :Args:
    - name - name property to search for.
    用法 driver.find_element_by_name(“name”)
  • find_element_by_link_text

      find_element_by_link_text(self, link_text):
    
      Finds element within this element's children by visible link text.
    通过元素可见链接文本定位
    :Args:
    - link_text - Link text string to search for.
    用法 driver.find_element_by_link_text(“text”)
  • find_elements_by_link_text

      find_element_by_link_text(self, link_text):
    
       Finds a list of elements within this element's children by visible link text
    通过元素可见链接文本定位,含有该属性的所有元素
    :Args:
    - link_text - Link text string to search for.
    用法 driver.find_elements_by_link_text(“text”)
  • find_element_by_partial_link_text

      find_element_by_partial_link_text(self, link_text):
    
      Finds element within this element's children by partially visible link text.
    通过元素部分可见链接文本定位
    :Args:
    - link_text - Link text string to search for.
    driver. find_element_by_partial_link_text(“text”)
  • find_elements_by_partial_link_text

      find_elements_by_partial_link_text(self, link_text):
    
      Finds a list of elements within this element's children by link text.
    通过元素部分可见链接文本定位,含有该属性的所有元素
    :Args:
    - link_text - Link text string to search for.
    driver. find_elements_by_partial_link_text(“text”)
  • find_element_by_tag_name

      find_element_by_tag_name(self, name):
    
      Finds element within this element's children by tag name.
    通过查找html的标签名称定位元素
    :Args:
    - name - name of html tag (eg: h1, a, span)
    用法 driver.find_element_by_tag_name(“name”)
  • find_elements_by_tag_name

      find_elements_by_tag_name(self, name):
    
      Finds a list of elements within this element's children by tag name.
    通过查找html的标签名称定位所有元素
    :Args:
    - name - name of html tag (eg: h1, a, span)
    用法driver.find_elements_by_tag_name(“name”)
  • find_element_by_xpath

      find_element_by_xpath(self, xpath):
    
      Finds element by xpath.
    通过Xpath定位元素,详细方法可参阅http://www.w3school.com.cn/xpath/
    :Args:
    xpath - xpath of element to locate. "//input[@class='myelement']" Note: The base path will be relative to this element's location. This will select the first link under this element. :: myelement.find_elements_by_xpath(".//a") However, this will select the first link on the page. :: myelement.find_elements_by_xpath("//a")
    用法 find_element_by_xpath(“//*”)
  • find_elements_by_xpath

      find_elements_by_xpath(self, xpath):
    
      Finds elements within the element by xpath.
    
      :Args:
    - xpath - xpath locator string. Note: The base path will be relative to this element's location. This will select all links under this element. :: myelement.find_elements_by_xpath(".//a") However, this will select all links in the page itself. :: myelement.find_elements_by_xpath("//a") 用法find_elements_by_xpath(“//*”)
  • find_element_by_class_name

      find_element_by_class_name(self, name):
    
      Finds element within this element's children by class name.
    通过元素class name属性定位元素
    :Args:
    - name - class name to search for.
    用法 driver. find_element_by_class_name(“android.widget.LinearLayout”)
  • find_elements_by_class_name

      find_elements_by_class_name(self, name):
    
      Finds a list of elements within this element's children by class name.
    通过元素class name属性定位所有含有该属性的元素
    :Args:
    - name - class name to search for.
    用法 driver. find_elements_by_class_name(“android.widget.LinearLayout”)

【2】 remote/webdriver

selenium原生方法,调用方法:

self.driver.xxxx()

  • page_source:

      def page_source(self)
    Gets the source of the current page.
    获取当前页面的源。
    :Usage:
    driver.page_source
  • get_screenshot_as_file

      def get_screenshot_as_file(self, filename):
    """
    Gets the screenshot of the current window. Returns False if there is
    any IOError, else returns True. Use full paths in your filename.
    获取 截图 存入指定的路径 :Args:
    - filename: The full path you wish to save your screenshot to. :Usage:
    driver.get_screenshot_as_file('/Screenshots/foo.png')
    """
  • get_window_size

      def get_window_size(self, windowHandle='current'):
    """
    Gets the width and height of the current window.
    获取窗口高度和 :Usage:
    driver.get_window_size()
    """
  • orientation

      def orientation(self):
    """
    Gets the current orientation of the device
    获取方向 :Usage:
    orientation = driver.orientation
    """ def orientation(self, value):
    """
    Sets the current orientation of the device
    设置方向 :Args:
    - value: orientation to set it to. :Usage:
    driver.orientation = 'landscape'
    """
  • desired_capabilities

      def desired_capabilities(self):
    """
    returns the drivers current desired capabilities being used
    返回 设定的运行参数
    """

【3】appium/webdriver

此类方法的调用方式均为

self.driver.xxxx()

输入操作

点击/触摸操作

  • scroll

      scroll(self, origin_el, destination_el):
    
      Scrolls from one element to another
    从元素origin_el滚动至元素destination_el
    :Args:
    - originalEl - the element from which to being scrolling
    - destinationEl - the element to scroll to :Usage:
    driver.scroll(el1, el2)
    用法 driver.scroll(el1,el2)
  • drag_and_drop

      drag_and_drop(self, origin_el, destination_el):
    
      Drag the origin element to the destination element
    将元素origin_el拖到目标元素destination_el
    :Args:
    - originEl - the element to drag
    - destinationEl - the element to drag to
    用法 driver.drag_and_drop(el1,el2)
  • tap

      tap(self, positions, duration=None):
    
      Taps on an particular place with up to five fingers, holding for a certain time
    模拟手指点击(最多五个手指),可设置按住时间长度(毫秒) :Args:
    - positions - an array of tuples representing the x/y coordinates of
    the fingers to tap. Length can be up to five.
    - duration - (optional) length of time to tap, in ms :Usage:
    driver.tap([(100, 20), (100, 60), (100, 100)], 500)
    用法 driver.tap([(x,y),(x1,y1)],500)
  • swipe

      swipe(self, start_x, start_y, end_x, end_y, duration=None):
    
      Swipe from one point to another point, for an optional duration.
    从A点滑动至B点,滑动时间为毫秒
    :Args:
    - start_x - x-coordinate at which to start
    - start_y - y-coordinate at which to start
    - end_x - x-coordinate at which to stop
    - end_y - y-coordinate at which to stop
    - duration - (optional) time to take the swipe, in ms. :Usage:
    driver.swipe(100, 100, 100, 400)
    用法 driver.swipe(x1,y1,x2,y2,500)
  • flick

      flick(self, start_x, start_y, end_x, end_y):
    
      Flick from one point to another point.
    按住A点后快速滑动至B点
    :Args:
    - start_x - x-coordinate at which to start
    - start_y - y-coordinate at which to start
    - end_x - x-coordinate at which to stop
    - end_y - y-coordinate at which to stop :Usage:
    driver.flick(100, 100, 100, 400) 用法 driver.flick(x1,y1,x2,y2)
  • pinch

      pinch(self, element=None, percent=200, steps=50):
    
      Pinch on an element a certain amount
    在元素上执行模拟双指捏(缩小操作)
    :Args:
    - element - the element to pinch
    - percent - (optional) amount to pinch. Defaults to 200%
    - steps - (optional) number of steps in the pinch action :Usage:
    driver.pinch(element) 用法 driver.pinch(element)
  • zoom

      zoom(self, element=None, percent=200, steps=50):
    
      Zooms in on an element a certain amount
    在元素上执行放大操作,双指放大
    :Args:
    - element - the element to zoom
    - percent - (optional) amount to zoom. Defaults to 200%
    - steps - (optional) number of steps in the zoom action :Usage:
    driver.zoom(element) 用法 driver.zoom(element)
  • open_notifications

      open_notifications(self):
    
      Open notification shade in Android (API Level 18 and above)
    打系统通知栏(仅支持API 18 以上的安卓系统)
    用法 driver.open_notifications()
  • shake

      shake(self):
    
      Shake the device.
    摇一摇手机
    用法 driver.shake()

按键

  • press_keycode

      press_keycode(self, keycode, metastate=None):
    
      Sends a keycode to the device. Android only. Possible keycodes can be found in http://developer.android.com/reference/android/view/KeyEvent.html.
    发送按键码(安卓仅有),按键码可以上网址中找到 :Args:
    - keycode - the keycode to be sent to the device
    - metastate - meta information about the keycode being sent
    用法 driver.press_ keycode(‘4’)
  • long_press_keycode

      long_press_keycode(self, keycode, metastate=None):
    
      Sends a long press of keycode to the device. Android only. Possible keycodes can be
    found in http://developer.android.com/reference/android/view/KeyEvent.html.
    发送一个长按的按键码(长按某键)
    详细的按键代码见这里 http://developer.android.com/reference/android/view/KeyEvent.html. :Args:
    - keycode - the keycode to be sent to the device
    - metastate - meta information about the keycode being sent
    用法 driver.long_press_keycode(4)

输入法

  • hide_keyboard

      hide_keyboard(self, key_name=None, key=None, strategy=None):
    
      Hides the software keyboard on the device. In iOS, use `key_name` to press a particular key, or `strategy`. In Android, no parameters are used.
    隐藏键盘,iOS使用key_name隐藏,安卓不使用参数 :Args:
    - key_name - key to press
    - strategy - strategy for closing the keyboard (e.g., `tapOutside`)
    driver.hide_keyboard()
  • available_ime_engines

      available_ime_engines(self):
    
      Get the available input methods for an Android device. Package and activity are returned (e.g., ['com.android.inputmethod.latin/.LatinIME'])
    Android only.
    返回安卓设备可用的输入法
    用法print(driver.available_ime_engines)
  • is_ime_active

      is_ime_active(self):
    
      Checks whether the device has IME service active. Returns True/False.
    Android only.
    检查设备是否有输入法服务活动。返回真/假。
    安卓
    用法 print(driver.is_ime_active())
  • activate_ime_engine

      activate_ime_engine(self, engine):
    
      Activates the given IME engine on the device.
    Android only.
    激活安卓设备中的指定输入法,设备可用输入法可以从“available_ime_engines”获取
    :Args:
    - engine - the package and activity of the IME engine to activate (e.g.,
    'com.android.inputmethod.latin/.LatinIME') 用法 driver.activate_ime_engine(“com.android.inputmethod.latin/.LatinIME”)
  • deactivate_ime_engine

      deactivate_ime_engine(self):
    
      Deactivates the currently active IME engine on the device.
    Android only.
    关闭安卓设备当前的输入法
    用法 driver.deactivate_ime_engine()
  • active_ime_engine

      active_ime_engine(self):
    
      Returns the activity and package of the currently active IME engine (e.g.,
    'com.android.inputmethod.latin/.LatinIME').
    Android only.
    返回当前输入法的包名
    用法 driver.active_ime_engine

app控制

  • reset

      reset(self):
    
      Resets the current application on the device.
    重置应用(相当于卸载重装应用)
    用法 driver.reset()
  • background_app

      background_app(self, seconds):
    
      Puts the application in the background on the device for a certain duration.
    后台运行app多少秒
    :Args:
    - seconds - the duration for the application to remain in the background
    用法 driver.background_app(5) 置后台5秒后再运行
  • is_app_installed

      is_app_installed(self, bundle_id):
    
      Checks whether the application specified by `bundle_id` is installed on the device.
    检查app是否有安装
    返回 True or False
    :Args:
    - bundle_id - the id of the application to query
    用法 driver.is_app_installed(“com.xxxx”)
  • install_app

      install_app(self, app_path):
    
      Install the application found at `app_path` on the device.
    安装app,app_path为安装包路径
    :Args:
    - app_path - the local or remote path to the application to install
    用法 driver.install_app(app_path)
  • remove_app

      remove_app(self, app_id):
    
      Remove the specified application from the device.
    删除app
    :Args:
    - app_id - the application id to be removed
    用法 driver.remove_app(“com.xxx.”)
  • launch_app

      launch_app(self):
    
      Start on the device the application specified in the desired capabilities.
    根据服务关键字 (desired capabilities) 启动会话 (session) 。请注意这必须在设定 autoLaunch=false 关键字时才能生效。这不是用于启动指定的 app/activities ————你可以使用 start_activity 做到这个效果————这是用来继续进行使用了 autoLaunch=false 关键字时的初始化 (Launch) 流程的。
    启动app
    用法 driver.launch_app()
  • close_app

      close_app(self):
    
      Stop the running application, specified in the desired capabilities, on the device.
    关闭app
    用法 driver.close_app()

contexts/activity

  • contexts

      contexts(self):
    
          Returns the contexts within the current session.
    返回当前会话中的上下文,使用后可以识别H5页面的控件 :Usage:
    driver.contexts
    用法 driver.contexts
  • current_context

      current_context(self):
    
          Returns the current context of the current session.
    返回当前会话的当前上下文
    :Usage:
    driver.current_context
    用法driver. current_context
  • context

      context(self):
    
          Returns the current context of the current session.
    返回当前会话的当前上下文。
    :Usage:
    driver.context
    用法driver. Context
  • current_activity

      current_activity(self):
    
      Retrieves the current activity on the device.
    获取当前的activity
    用法 print(driver.current_activity())
  • wait_activity

      wait_activity(self, activity, timeout, interval=1):
    
      Wait for an activity: block until target activity presents or time out.
    This is an Android-only method.
    等待指定的activity出现直到超时,interval为扫描间隔1秒
    即每隔几秒获取一次当前的activity
    返回的True 或 False
    :Agrs:
    - activity - target activity
    - timeout - max wait time, in seconds
    - interval - sleep interval between retries, in seconds
    用法driver.wait_activity(‘.activity.xxx’,5,2)
  • start_activity

      start_activity(self, app_package, app_activity, **opts):
    
      Opens an arbitrary activity during a test. If the activity belongs to
    another application, that application is started and the activity is opened. This is an Android-only method.
    在测试过程中打开任意活动。如果活动属于另一个应用程序,该应用程序的启动和活动被打开。
    这是一个安卓的方法
    :Args:
    - app_package - The package containing the activity to start.
    - app_activity - The activity to start.
    - app_wait_package - Begin automation after this package starts (optional).
    - app_wait_activity - Begin automation after this activity starts (optional).
    - intent_action - Intent to start (optional).
    - intent_category - Intent category to start (optional).
    - intent_flags - Flags to send to the intent (optional).
    - optional_intent_arguments - Optional arguments to the intent (optional).
    - stop_app_on_reset - Should the app be stopped on reset (optional)?
    用法 driver.start_activity(app_package, app_activity)

network

  • network_connection

      network_connection(self):
    
      Returns an integer bitmask specifying the network connection type.
    Android only.
    返回网络类型 数值
    Possible values are available through the enumeration `appium.webdriver.ConnectionType` 用法 driver.network_connection
  • set_network_connection

      set_network_connection(self, connectionType):
    
      Sets the network connection type. Android only.
    Possible values:
    Value (Alias) | Data | Wifi | Airplane Mode
    -------------------------------------------------
    0 (None) | 0 | 0 | 0
    1 (Airplane Mode) | 0 | 0 | 1
    2 (Wifi only) | 0 | 1 | 0
    4 (Data only) | 1 | 0 | 0
    6 (All network on) | 1 | 1 | 0
    These are available through the enumeration `appium.webdriver.ConnectionType`
    设置网络类型
    :Args:
    - connectionType - a member of the enum appium.webdriver.ConnectionType 用法 先加载from appium.webdriver.connectiontype import ConnectionType
    dr.set_network_connection(ConnectionType.WIFI_ONLY)
    ConnectionType的类型有
    NO_CONNECTION = 0
    AIRPLANE_MODE = 1
    WIFI_ONLY = 2
    DATA_ONLY = 4
    ALL_NETWORK_ON = 6

位置服务

  • toggle_location_services

      toggle_location_services(self):
    
      Toggle the location services on the device. Android only.
    打开安卓设备上的位置定位设置
    用法 driver.toggle_location_services()
  • set_location

      set_location(self, latitude, longitude, altitude):
    
      Set the location of the device
    设置设备的经纬度
    :Args:
    - latitude纬度 - String or numeric value between -90.0 and 90.00
    - longitude经度 - String or numeric value between -180.0 and 180.0
    - altitude海拔高度- String or numeric value
    用法 driver.set_location(纬度,经度,高度)

文件pull/push

  • pull_file

      def pull_file(self, path):
    """Retrieves the file at `path`. Returns the file's content encoded as
    Base64.
    从设备的指定路径获取文件 :Args:
    - path - the path to the file on the device
    """
    用法:driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')
  • pull_folder

      def pull_folder(self, path):
    """Retrieves a folder at `path`. Returns the folder's contents zipped
    and encoded as Base64. :Args:
    - path - the path to the folder on the device
    """
  • push_file

      def push_file(self, path, base64data):
    """Puts the data, encoded as Base64, in the file specified as `path`. :Args:
    - path - the path on the device
    - base64data - data, encoded as Base64, to be written to the file
    """
    用法:
    data = "some data for the file"
    path = "/data/local/tmp/file.txt"
    driver.push_file(path, data.encode('base64'))

其他

  • end_test_coverage

      def end_test_coverage(self, intent, path):
    """Ends the coverage collection and pull the coverage.ec file from the device.
    Android only.
    测试覆盖率相关,目前不能提供完整支持。
    See https://github.com/appium/appium/blob/master/docs/en/android_coverage.md :Args:
    - intent - description of operation to be performed
    - path - path to coverage.ec file to be pulled from the device
    """
  • set_value

      def set_value(self, element, value):
    """Set the value on an element in the application.
    设置某元素的值 :Args:
    - element - the element whose value will be set
    - Value - the value to set on the element
    """
  • create_web_element

      def create_web_element(self, element_id):
    """
    Creates a web element with the specified element_id.
    Overrides method in Selenium WebDriver in order to always give them
    Appium WebElement
    """
  • app_strings

      def app_strings(self, language=None, string_file=None):
    """Returns the application strings from the device for the specified
    language.
    解析被测app的strings.xml :Args:
    - language - strings language code
    - string_file - the name of the string file to query
    """

【4】remote/webelement

页面元素的方法,调用方法:

element.xxxx()

  • tag_name

      tag_name(self):
    
      This element's ``tagName`` property.
    返回元素的tagName属性
    经实践返回的是class name
    用法 element.tag_name()
  • text

      text(self):
    
      The text of the element.
    返回元素的文本值
    用法 element.text
    注意:没有括号
  • click

      click(self):
    
      Clicks the element.
    点击元素
    用法 element.click()
  • submit

      submit(self):
    
      Submits a form.
    提交表单
    用法 暂无
  • clear

      clear(self):
    
      Clears the text if it's a text entry element.
    清除输入的内容
    用法 element.clear()
  • get_attribute

      get_attribute(self, name):
    
      Gets the given attribute or property of the element.
    1、获取 content-desc 的方法为 get_attribute("name") ,而且还不能保证返回的一定是 content-desc (content-desc 为空时会返回 text 属性值)
    2、get_attribute 方法不是我们在 uiautomatorviewer 看到的所有属性都能获取的(此处的名称均为使用 get_attribute 时使用的属性名称): 可获取的:
    字符串类型:
    name(返回 content-desc 或 text)
    text(返回 text)
    className(返回 class,只有 API=>18 才能支持)
    resourceId(返回 resource-id,只有 API=>18 才能支持) 布尔类型(如果无特殊说明, get_attribute 里面使用的属性名称和 uiautomatorviewer 里面的一致):
    enabled
    checkable
    checked
    clickable
    focusable
    focused
    longClickable(返回 long-clickable)
    scrollable
    selected
    displayed(此元素是否在当前界面存在。调用的是 UIObject 的 exists() 方法,详情请看 http://developer.android.com/reference/android/support/test/uiautomator/UiObject.html#exists()) Values which are considered truthy, that is equals "true" or "false",
    are returned as booleans. All other non-``None`` values are returned
    as strings. For attributes or properties which do not exist, ``None``
    is returned. :Args:
    - name - Name of the attribute/property to retrieve. Example:: # Check if the "active" CSS class is applied to an element.
    is_active = "active" in target_element.get_attribute("class")
  • is_selected

      is_selected(self):
    
      Returns whether the element is selected.
    
          Can be used to check if a checkbox or radio button is selected.
    返回元素是否选择。
    可以用来检查一个复选框或单选按钮被选中。
    用法 element.is_slected()
  • is_enabled

      is_enabled(self):
    
      Returns whether the element is enabled.
    返回元素是否可用True of False
    用法 element.is_enabled()
  • send_keys

      send_keys(self, *value):
    
      Simulates typing into the element.
    在元素中模拟输入(开启appium自带的输入法并配置了appium输入法后,可以输入中英文)
    :Args:
    - value - A string for typing, or setting form fields. For setting
    file inputs, this could be a local file path. Use this to send simple key events or to fill out form fields:: form_textfield = driver.find_element_by_name('username')
    form_textfield.send_keys("admin") This can also be used to set file inputs. :: file_input = driver.find_element_by_name('profilePic')
    file_input.send_keys("path/to/profilepic.gif")
    # Generally it's better to wrap the file path in one of the methods
    # in os.path to return the actual path to support cross OS testing.
    # file_input.send_keys(os.path.abspath("path/to/profilepic.gif"))
    用法:
    driver.element.send_keys(“中英”)
  • size

      size(self):
    
      The size of the element.
    获取元素的大小(高和宽) new_size["height"] = size["height"]
    new_size["width"] = size["width"] 用法 driver.element.size
  • location_once_scrolled_into_view

      location_once_scrolled_into_view(self):
    
       """THIS PROPERTY MAY CHANGE WITHOUT WARNING. Use this to discover
    where on the screen an element is so that we can click it. This method
    should cause the element to be scrolled into view. Returns the top lefthand corner location on the screen, or ``None`` if
    the element is not visible.
    不稳定,不推荐使用。
    """
  • location

      location(self):
    
      The location of the element in the renderable canvas.
    获取元素左上角的坐标 用法 driver.element.location
    '''返回element的x坐标, int类型'''
    driver.element.location.get('x')
    '''返回element的y坐标, int类型'''
    driver.element.location.get('y')
  • rect

      rect(self):
    
      A dictionary with the size and location of the element.
    元素的大小和位置的字典

参考连接如下:

https://testerhome.com/topics/3711

http://appium.readthedocs.org/en/stable/cn/writing-running-appium/appium-bindings.cn/

随机推荐

  1. [LeetCode] Happy Number

    Happy Number Total Accepted: 35195 Total Submissions: 106936 Difficulty: Easy Write an algorithm to ...

  2. javascript模板插件amaze.js

    摘要: 最近在开发项目时,异步接口需要前端渲染数据,js拼接太低级,必然要用模板插件.之前用过基于jQuery的和juicer等插件,考虑到以后公司项目上的统一,移动端和pc端上的统一,以及可维护性, ...

  3. javascript实现的图数据结构的广度优先 搜索(Breadth-First Search,BFS)和深度优先搜索(Depth-First Search,DFS)

    最后一例,搞得快.三天之内走了一次.. 下一步,面象对像的javascript编程. function Dictionary(){ var items = {}; this.has = functio ...

  4. Qt 学习之路 :信号槽

    信号槽是 Qt 框架引以为豪的机制之一.熟练使用和理解信号槽,能够设计出解耦的非常漂亮的程序,有利于增强我们的技术设计能力. 所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被 ...

  5. mongodb 备份与恢复

    备份 mongodump -d dbname -o backup 例如 mongodump -d student -o backup 恢复 mongorestore -d dbname -o back ...

  6. 由Find All References引发的思考。,

    今天在研究C#代码问题的时候遇到了一个Visual Studio的小问题.在Visual Studio 2013中,使用Find All References功能不能找到同一类型不同版本的所有引用,具 ...

  7. 如何给php数组添加元素

    以参考下 本文较为详细的总结了php数组添加元素方法.分享给大家供大家参考.具体分析如下: 如果我们是一维数组增加数组元素我们可以使用ArrayListay_push,当然除这种方法之外我们还有更直接 ...

  8. HttpServletRequest.getContextPath()取得的路径

    如果项目名称为test,你在浏览器中输入请求路径:http://localhost:8080/test/pc/list.jsp 执行下面向行代码后打印出如下结果: 1. System.out.prin ...

  9. hibernate一级缓存和快照

    摘自网络: Hibernate中的一级缓存的底层是以Map形式存在的,key是主键,value是对象,所以它的泛型为Map<Serializable,Object>,key的泛型为串行化是 ...

  10. golang-grpc-Unimplemented-desc

    golang 调用grpc 服务方法时候提示:"rpc error: code = Unimplemented desc ="的错误, 这是由于pb中的package name 被 ...