锘??xml version="1.0" encoding="utf-8" standalone="yes"?>av午夜福利一片免费看久久,精品久久久久久无码专区,久久综合狠狠色综合伊人http://www.shnenglu.com/zdhsoft/category/21247.html涓嶈兘鍋滄鐨勮剼姝?/description>zh-cnSun, 28 May 2017 09:33:27 GMTSun, 28 May 2017 09:33:27 GMT60Appium杈撳叆鎱㈢殑鍘熷洜鍒嗘瀽http://www.shnenglu.com/zdhsoft/archive/2017/05/27/214960.html鍐摐鍐摐Sat, 27 May 2017 09:35:00 GMThttp://www.shnenglu.com/zdhsoft/archive/2017/05/27/214960.htmlhttp://www.shnenglu.com/zdhsoft/comments/214960.htmlhttp://www.shnenglu.com/zdhsoft/archive/2017/05/27/214960.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/214960.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/214960.html

浣跨敤appium杈撳叆涓枃錛屽彂鐜板ソ鎱紒鑷沖皯5縐掍互涓婏紝濡傛灉鍦ㄨ繖鏍風殑鎯呭喌涓嬪仛嫻嬭瘯錛岃繖灝卞ソ鎮(zhèn)插墽浜嗐?nbsp;
浠巃ppium錛?.6.3)浠g爜涓婃潵鐪嬶紝娌℃湁浠涔堥棶棰橈紝鐩存帴鏄氳繃boostrap鐨剆etText鐨勬柟娉曘傝鏄氨涓嬭澆浜哸ppium-bootstrap鐨勪唬鐮佺湅錛屼粠榪欓噷寮鍙戞壘鍒扮殑浠g爜錛岄兘鏄痡ava鐨勪唬鐮侊紝鎵懼埌 io.appium.android.bootstrap.handler.SetText 
鍦╪ew Clear().execute(command);鏃墮棿闀胯揪5縐掞紙鎵撴棩蹇楀彂鐜幫級錛屼笉綆℃枃鏈鏈夋病鏈夊唴瀹癸紝閮戒細鎵ц
/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 * You may obtain a copy of the License at
 *
 *     
http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 
*/

package io.appium.android.bootstrap.handler;

import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import io.appium.android.bootstrap.*;
import io.appium.android.bootstrap.exceptions.ElementNotFoundException;
import io.appium.android.bootstrap.handler.Find;
import org.json.JSONException;

import java.util.Hashtable;

/**
 * This handler is used to set text in elements that support it.
 *
 
*/
public class SetText extends CommandHandler {

  /*
   * @param command The {@link AndroidCommand} used for this handler.
   *
   * @return {@link AndroidCommandResult}
   *
   * @throws JSONException
   *
   * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android.
   * bootstrap.AndroidCommand)
   
*/
  @Override
  public AndroidCommandResult execute(final AndroidCommand command)
      throws JSONException {
    AndroidElement el = null;
    if (command.isElementCommand()) {
      el = command.getElement();
      Logger.debug("Using element passed in: " + el.getId());
    } else {
      try {
        AndroidElementsHash  elements = AndroidElementsHash.getInstance();
        el = elements.getElement(new UiSelector().focused(true), "");
        Logger.debug("Using currently-focused element: " + el.getId());
      } catch (ElementNotFoundException e) {
        Logger.debug("Error retrieving focused element: " + e);
        return getErrorResult("Unable to set text without a focused element.");
      }
    }
    try {
      final Hashtable<String, Object> params = command.params();
      boolean replace = Boolean.parseBoolean(params.get("replace").toString());
      String text = params.get("text").toString();
      boolean pressEnter = false;
      if (text.endsWith("\\n")) {
        pressEnter = true;
        text = text.replace("\\n", "");
        Logger.debug("Will press enter after setting text");
      }
      boolean unicodeKeyboard = false;
      if (params.get("unicodeKeyboard") != null) {
        unicodeKeyboard = Boolean.parseBoolean(params.get("unicodeKeyboard").toString());
      }
      String currText = el.getText();
      new Clear().execute(command); //涓嶇鏈夋病鏈夛紝榪欓噷閮戒細鎵ц
      if (!el.getText().isEmpty()) {
        // clear could have failed, or we could have a hint in the field
        
// we'll assume it is the latter
        Logger.debug("Text not cleared. Assuming remainder is hint text.");
        currText = "";
      }
      if (!replace) {
        text = currText + text;
      }
      final boolean result = el.setText(text, unicodeKeyboard);
      if (!result) {
        return getErrorResult("el.setText() failed!");
      }
      if (pressEnter) {
        final UiDevice d = UiDevice.getInstance();
        d.pressEnter();
      }
      return getSuccessResult(result);
    } catch (final UiObjectNotFoundException e) {
      return new AndroidCommandResult(WDStatus.NO_SUCH_ELEMENT,
          e.getMessage());
    } catch (final Exception e) { // handle NullPointerException
      return getErrorResult("Unknown error");
    }
  }
}
鐒跺悗錛屾垜浠啀鐪婥lear鐨勪唬鐮?/div>

/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 * You may obtain a copy of the License at
 *
 *     
http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 
*/

package io.appium.android.bootstrap.handler;

import android.graphics.Rect;
import android.os.SystemClock;
import android.view.InputDevice;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import io.appium.android.bootstrap.AndroidCommand;
import io.appium.android.bootstrap.AndroidCommandResult;
import io.appium.android.bootstrap.AndroidElement;
import io.appium.android.bootstrap.CommandHandler;
import io.appium.android.bootstrap.Logger;
import io.appium.android.bootstrap.WDStatus;
import io.appium.uiautomator.core.InteractionController;
import io.appium.uiautomator.core.UiAutomatorBridge;
import org.json.JSONException;

import java.lang.reflect.InvocationTargetException;

/**
 * This handler is used to clear elements in the Android UI.
 *
 * Based on the element Id, clear that element.
 *
 * UiAutomator method clearText is flaky hence overriding it with custom implementation.
 
*/
public class Clear extends CommandHandler {

  /*
   * Trying to select entire text with correctLongClick and increasing time intervals.
   * Checking if element still has text in them and and if true falling back on UiAutomator clearText
   *
   * @param command The {@link AndroidCommand}
   *
   * @return {@link AndroidCommandResult}
   *
   * @throws JSONException
   *
   * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android.
   * bootstrap.AndroidCommand)
   
*/
  @Override
  public AndroidCommandResult execute(final AndroidCommand command)
          throws JSONException {
    if (command.isElementCommand()) {
      try {
        final AndroidElement el = command.getElement();

        // first, try to do native clearing
        Logger.debug("Attempting to clear using UiObject.clearText().");
        el.clearText();  //鏃犳潯浠墮兘浼氭墽琛岃繖鍧椼傜劧鍚庡啀鍒嗘瀽clearText
        if (el.getText().isEmpty()) {
          return getSuccessResult(true);
        }

        // see if there is hint text
        if (hasHintText(el)) {
          Logger.debug("Text remains after clearing, "
              + "but it appears to be hint text.");
          return getSuccessResult(true);
        }

        // next try to select everything and delete
        Logger.debug("Clearing text not successful. Attempting to clear " +
                "by selecting all and deleting.");
        if (selectAndDelete(el)) {
          return getSuccessResult(true);
        }

        // see if there is hint text
        if (hasHintText(el)) {
          Logger.debug("Text remains after clearing, "
              + "but it appears to be hint text.");
          return getSuccessResult(true);
        }

        // finally try to send delete keys
        Logger.debug("Clearing text not successful. Attempting to clear " +
                "by sending delete keys.");
        if (sendDeleteKeys(el)) {
          return getSuccessResult(true);
        }

        if (!el.getText().isEmpty()) {
          // either there was a failure, or there is hint text
          if (hasHintText(el)) {
            Logger.debug("Text remains after clearing, " +
                    "but it appears to be hint text.");
            return getSuccessResult(true);
          } else if (!el.getText().isEmpty()) {
            Logger.debug("Exhausted all means to clear text but '" +
                    el.getText() + "' remains.");
            return getErrorResult("Clear text not successful.");
          }
        }
        return getSuccessResult(true);
      } catch (final UiObjectNotFoundException e) {
        return new AndroidCommandResult(WDStatus.NO_SUCH_ELEMENT,
            e.getMessage());
      } catch (final Exception e) { // handle NullPointerException
        return getErrorResult("Unknown error clearing text");
      }
    }
    return getErrorResult("Unknown error");
  }

  private boolean selectAndDelete(AndroidElement el)
      throws UiObjectNotFoundException, IllegalAccessException,
        InvocationTargetException, NoSuchMethodException {
    Rect rect = el.getVisibleBounds();
    // Trying to select entire text.
    TouchLongClick.correctLongClick(rect.left + 20, rect.centerY(), 2000);
    UiObject selectAll = new UiObject(new UiSelector().descriptionContains("Select all"));
    if (selectAll.waitForExists(2000)) {
      selectAll.click();
    }
    // wait for the selection
    SystemClock.sleep(500);
    // delete it
    UiAutomatorBridge.getInstance().getInteractionController().sendKey(KeyEvent.KEYCODE_DEL, 0);

    return el.getText().isEmpty();
  }

  private boolean sendDeleteKeys(AndroidElement el)
      throws UiObjectNotFoundException, IllegalAccessException,
        InvocationTargetException, NoSuchMethodException {
    String tempTextHolder = "";

    // Preventing infinite while loop.
    while (!el.getText().isEmpty() && !tempTextHolder.equalsIgnoreCase(el.getText())) {
      // Trying send delete keys after clicking in text box.
      el.click();
      // Sending delete keys asynchronously, both forward and backward
      for (int key : new int[] { KeyEvent.KEYCODE_DEL, KeyEvent.KEYCODE_FORWARD_DEL }) {
        tempTextHolder = el.getText();
        final int length = tempTextHolder.length();
        final long eventTime = SystemClock.uptimeMillis();
        KeyEvent deleteEvent = new KeyEvent(eventTime, eventTime, KeyEvent.ACTION_DOWN,
                key, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, 0,
                InputDevice.SOURCE_KEYBOARD);
        for (int count = 0; count < length; count++) {
          UiAutomatorBridge.getInstance().injectInputEvent(deleteEvent, false);
        }
      }
    }

    return el.getText().isEmpty();
  }

  private boolean hasHintText(AndroidElement el)
      throws UiObjectNotFoundException, IllegalAccessException,
        InvocationTargetException, NoSuchMethodException {
    // to test if the remaining text is hint text, try sending a single
    
// delete key and testing if there is any change.
    
// ignore the off-chance that the delete silently fails and we get a false
    
// positive.
    String currText = el.getText();

    try {
      if (!el.getBoolAttribute("focused")) {
        Logger.debug("Could not check for hint text because the element is not focused!");
        return false;
      }
    } catch (final Exception e) {
      Logger.debug("Could not check for hint text: " + e.getMessage());
      return false;
    }

    InteractionController interactionController = UiAutomatorBridge.getInstance().getInteractionController();
    interactionController.sendKey(KeyEvent.KEYCODE_DEL, 0);
    interactionController.sendKey(KeyEvent.KEYCODE_FORWARD_DEL, 0);

    return currText.equals(el.getText());
  }
}
鍐嶇湅鐪婣ndroidElement.clearText鏄粈涔堟牱鐨?/div>
  public void clearText() throws UiObjectNotFoundException {
    el.clearTextField();
  }
榪欎釜閮藉氨鏄痗om.android.uiautomator.core.UiObject.clearTextField 
浜庢槸鎵懼啀鎵懼埌uiautomator鐨勪唬鐮佸啀鏉ュ垎鏋愶紙榪欎釜浠g爜闇瑕佷笅杞絘ndriod sdk,鍦ㄥ搴攁ndroid鐗堟湰鐨勭洰褰曚笅錛屼細鏈夋簮鐮侊紝涔熸湁uiautomator鐨勬簮浠g爜),鎴戣繖閲岀殑璺緞鏄細 
Android\sdk\sources\android-19\com\android\uiautomator\core 
鍦║iObject.java鎵懼埌clearTextField瀹炵幇
/**
     * Clears the existing text contents in an editable field.
     *
     * The {
@link UiSelector} of this object must reference a UI element that is editable.
     *
     * When you call this method, the method first sets focus at the start edge of the field.
     * The method then simulates a long-press to select the existing text, and deletes the
     * selected text.
     *
     * If a "Select-All" option is displayed, the method will automatically attempt to use it
     * to ensure full text selection.
     *
     * Note that it is possible that not all the text in the field is selected; for example,
     * if the text contains separators such as spaces, slashes, at symbol etc.
     * Also, not all editable fields support the long-press functionality.
     *
     * 
@throws UiObjectNotFoundException
     * 
@since API Level 16
     
*/
    public void clearTextField() throws UiObjectNotFoundException {
        Tracer.trace();
        // long click left + center
        AccessibilityNodeInfo node = findAccessibilityNodeInfo(mConfig.getWaitForSelectorTimeout());
        if(node == null) {
            throw new UiObjectNotFoundException(getSelector().toString());
        }
        Rect rect = getVisibleBounds(node);
        getInteractionController().longTapNoSync(rect.left + 20, rect.centerY()); //闀挎寜
        
// check if the edit menu is open
        UiObject selectAll = new UiObject(new UiSelector().descriptionContains("Select all"));
        if(selectAll.waitForExists(50))
            selectAll.click();
        // wait for the selection
        SystemClock.sleep(250); //榪欓噷絳?50ms
        
// delete it
        getInteractionController().sendKey(KeyEvent.KEYCODE_DEL, 0);
    }
鐩鎬俊澶у錛屽彲浠ユ壘鍒版參鐨勫師鍥犱簡銆傝繖閲屽仛涓嬈¢暱鎸夛紝鐒跺啀鍐嶅仛鍏ㄩ夛紝鐒跺悗鍐峴leep(250)錛岃繕鏈変竴涓猻electAll.waitForExists(50)錛?榪欎簺閮芥槸鑰楄垂鏃墮棿鐨勩?/div>
鍐嶆壘涓涓婾iObject.java涓璼etText鐨勫疄鐜?/div>

    public boolean setText(String text) throws UiObjectNotFoundException {
        Tracer.trace(text);
        clearTextField();
        return getInteractionController().sendText(text);
    }
鍙戠幇榪欓噷鍙堣皟鐢ㄤ簡涓嬈learTextField錛岃繖鏍風畻鏉ワ紝璁句竴嬈℃枃鏈紝閮戒細娓呯悊涓ゆ鏂囨湰錛屼簬鏄紝榪欐椂闂村氨闀夸簡銆?nbsp;
浼樺寲錛氬彧闇瑕佸皢io.appium.android.bootstrap.handler.SetText涓殑new Clear().execute(command)鍘繪帀灝卞彲浠ヤ簡銆?/div>



鍐摐 2017-05-27 17:35 鍙戣〃璇勮
]]>appium鐨勪竴涓唴瀛樻硠闇瞓ughttp://www.shnenglu.com/zdhsoft/archive/2017/02/23/214695.html鍐摐鍐摐Thu, 23 Feb 2017 12:35:00 GMThttp://www.shnenglu.com/zdhsoft/archive/2017/02/23/214695.htmlhttp://www.shnenglu.com/zdhsoft/comments/214695.htmlhttp://www.shnenglu.com/zdhsoft/archive/2017/02/23/214695.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/214695.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/214695.html
鍩轟簬appium婧愮爜 1.6.3 榪愯,鍙戠幇榪愯涓孌墊椂闂村悗,浼氬嚭鐜板唴瀛樻孩鍑?
鐢╪ode-heapdump鐢熸垚heap蹇収 鍙戠幇澶氫簡寰堝瀛楃涓插璞?鍐呭濡備笅  闃呰鍏ㄦ枃

鍐摐 2017-02-23 20:35 鍙戣〃璇勮
]]>
浣跨敤node heapdumphttp://www.shnenglu.com/zdhsoft/archive/2017/02/23/214693.html鍐摐鍐摐Thu, 23 Feb 2017 06:28:00 GMThttp://www.shnenglu.com/zdhsoft/archive/2017/02/23/214693.htmlhttp://www.shnenglu.com/zdhsoft/comments/214693.htmlhttp://www.shnenglu.com/zdhsoft/archive/2017/02/23/214693.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/214693.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/214693.html緗戜笂鐢ㄤ嬌鐢ㄥ鍔犺繍琛屽唴瀛樼殑鏂瑰紡(榪樻槸鎶椾笉浣?錛屾病鍔炴硶錛屽氨鍙ソ鎵懼嚭鍐呭瓨娉勯湶鐨勫湴鏂逛簡
瀵筺ode.js寰堝鏂囩珷錛岄兘鏄鐢╩emwatch錛岀粨鏋滃彂鐜幫紝榪欎釜鏄竴涓欏圭洰錛屾湁鍥涘勾娌℃湁鏇存柊榪囦簡錛屽湪鐜版湁鐨勭幆澧冧笅錛屾槸娌℃湁鍔炴硶緙栬瘧鐨勩?
鐒跺悗鍙堟湁涓涓猰emwatch-next錛岄【鍚嶆濅箟錛屽氨鏄痬emwatch鐨勪笅涓涓増鏈紝緇撴灉鏄灉鐒朵篃鍙互緙栬瘧錛屼竴浜涗簨浠朵篃鏀寔錛屼絾鏄headdump鍚庤end鍚庯紝灝辨寕浜嗐?
鍥藉唴錛岀敤鐧懼害錛屼綘涓涓囧勾閮藉埆鎯寵В鍐抽棶棰橈紝浼拌鎵炬垚浜轟笉瀹滅殑涓滆タ錛岀櫨搴︿笘鐣岀涓鍚嶏紝google涔熶笉姣旇繃鐧懼害銆?nbsp; 闃呰鍏ㄦ枃

鍐摐 2017-02-23 14:28 鍙戣〃璇勮
]]>
appium鐨剆ource榪斿洖鐨剎ml瀛楃涓插鐞嗙殑宸ュ叿鍑芥暟http://www.shnenglu.com/zdhsoft/archive/2017/02/20/214688.html鍐摐鍐摐Mon, 20 Feb 2017 06:31:00 GMThttp://www.shnenglu.com/zdhsoft/archive/2017/02/20/214688.htmlhttp://www.shnenglu.com/zdhsoft/comments/214688.htmlhttp://www.shnenglu.com/zdhsoft/archive/2017/02/20/214688.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/214688.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/214688.html闃呰鍏ㄦ枃

鍐摐 2017-02-20 14:31 鍙戣〃璇勮
]]>
appium鐨刄iAutomator exited unexpectedly(1.6.3)http://www.shnenglu.com/zdhsoft/archive/2017/02/08/214663.html鍐摐鍐摐Wed, 08 Feb 2017 06:39:00 GMThttp://www.shnenglu.com/zdhsoft/archive/2017/02/08/214663.htmlhttp://www.shnenglu.com/zdhsoft/comments/214663.htmlhttp://www.shnenglu.com/zdhsoft/archive/2017/02/08/214663.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/214663.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/214663.html浠婂ぉ鐢ㄦ柊鎵嬫満錛岃繍琛宎ppium 1.6.3 嫻嬭瘯錛屽彂鐜版棩蹇楁墦鍗板涓嬮敊璇細
[debug] [ADB] Creating ADB subprocess with args: ["-P",5037,"-s","xxxxxxxxxxx","shell","uiautomator","runtest","AppiumBootstrap.jar","-c","io.appium.android.bootstrap.Bootstrap","-e","pkg","com.tencent.mm","-e","disableAndroidWatchers",false,"-e","acceptSslCerts",false]
[UiAutomator] UiAutomator exited unexpectedly with code 0, signal null
浠旂粏鐪嬫棩蹇楀彂鐜?/span>錛屽彂鐜?data/local/tmp緙哄皯AppiumBootstrap.jar
鐒跺悗鍦╝ppium鐨刵ode_module鐩綍涓嬮潰鐨?/span>appium-android-bootstrap\bootstrap\bin鎵懼埌AppiumBootstrap.jar錛岀劧鍚庡鍒跺埌/data/local/tmp灝卞彲浠ワ紝鐒跺悗鍐嶈繍琛岋紝嫻嬭瘯OK




鍐摐 2017-02-08 14:39 鍙戣〃璇勮
]]>
appium鐨勪腑鏂囪緭鍏?/title><link>http://www.shnenglu.com/zdhsoft/archive/2017/01/06/214578.html</link><dc:creator>鍐摐</dc:creator><author>鍐摐</author><pubDate>Fri, 06 Jan 2017 09:45:00 GMT</pubDate><guid>http://www.shnenglu.com/zdhsoft/archive/2017/01/06/214578.html</guid><wfw:comment>http://www.shnenglu.com/zdhsoft/comments/214578.html</wfw:comment><comments>http://www.shnenglu.com/zdhsoft/archive/2017/01/06/214578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/zdhsoft/comments/commentRss/214578.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zdhsoft/services/trackbacks/214578.html</trackback:ping><description><![CDATA[     鎽樿: 浠巃ppium 1.3.3鍚?灝辨敮鎸乽nicode杈撳叆,涔熷氨鏄彲浠ヨ緭鍏ヤ腑鏂囦簡. <br>瀹為檯榪愯鐜錛?nbsp; <a href='http://www.shnenglu.com/zdhsoft/archive/2017/01/06/214578.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/zdhsoft/aggbug/214578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zdhsoft/" target="_blank">鍐摐</a> 2017-01-06 17:45 <a href="http://www.shnenglu.com/zdhsoft/archive/2017/01/06/214578.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>涓篴ppium閰嶇疆gulp es2017 to node 6.9.xhttp://www.shnenglu.com/zdhsoft/archive/2016/12/22/214533.html鍐摐鍐摐Thu, 22 Dec 2016 03:15:00 GMThttp://www.shnenglu.com/zdhsoft/archive/2016/12/22/214533.htmlhttp://www.shnenglu.com/zdhsoft/comments/214533.htmlhttp://www.shnenglu.com/zdhsoft/archive/2016/12/22/214533.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/214533.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/214533.html瀹冪敤涓婁簡es2017鐨勭壒鎬?await鍜宎sync
浣嗘槸鐢ㄥ畠璋冪敤gulp watch鐨勬椂鍊?甯稿父鎶ラ敊.....
鐜板湪node.js宸茬粡鍒拌揪浜?.9.x,宸茬粡99%鏀寔es2015(es6),鎵浠ヨ繖閲岄噸璋冩柊璋冧竴涓?nbsp; 闃呰鍏ㄦ枃

鍐摐 2016-12-22 11:15 鍙戣〃璇勮
]]>
瀹夎appium-selendroid-driverhttp://www.shnenglu.com/zdhsoft/archive/2016/12/20/214524.html鍐摐鍐摐Tue, 20 Dec 2016 09:34:00 GMThttp://www.shnenglu.com/zdhsoft/archive/2016/12/20/214524.htmlhttp://www.shnenglu.com/zdhsoft/comments/214524.htmlhttp://www.shnenglu.com/zdhsoft/archive/2016/12/20/214524.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/214524.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/214524.html闃呰鍏ㄦ枃

鍐摐 2016-12-20 17:34 鍙戣〃璇勮
]]>
国产AⅤ精品一区二区三区久久 | 九九久久自然熟的香蕉图片| 一极黄色视频久久网站| 久久强奷乱码老熟女网站| 久久综合给合久久国产免费| 久久免费精品视频| 国产亚洲精品久久久久秋霞| 久久精品一区二区| 亚洲人成电影网站久久| 久久99国产精品久久99果冻传媒| 亚洲а∨天堂久久精品9966| 久久精品人人槡人妻人人玩AV | 久久久久久久尹人综合网亚洲| 欧美性大战久久久久久| 国产V综合V亚洲欧美久久| 麻豆久久| 办公室久久精品| 国内精品久久久久久99蜜桃| 蜜臀久久99精品久久久久久| 久久综合久久综合久久| 久久亚洲私人国产精品vA| 久久国产AVJUST麻豆| 久久se精品一区二区影院| 91精品国产综合久久婷婷| 少妇久久久久久久久久| 伊人色综合久久天天网| 国内精品久久久久久久久| 久久er国产精品免费观看2| 久久婷婷成人综合色综合| 99精品国产综合久久久久五月天 | 久久中文字幕人妻丝袜| 久久久久99精品成人片三人毛片| 久久精品草草草| 91精品国产91热久久久久福利| 久久香蕉超碰97国产精品| 亚洲午夜久久久久妓女影院| 亚洲欧美日韩久久精品第一区| 亚洲欧美久久久久9999| 亚洲va久久久久| 亚洲精品tv久久久久久久久| 人妻精品久久无码专区精东影业|