锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲午夜精品久久久久久浪潮 ,欧美日本国产在线,欧美日韩在线另类http://m.shnenglu.com/zdhsoft/category/21247.html涓嶈兘鍋滄鐨勮剼姝?/description>zh-cnSun, 28 May 2017 09:33:27 GMTSun, 28 May 2017 09:33:27 GMT60Appium杈撳叆鎱㈢殑鍘熷洜鍒嗘瀽http://m.shnenglu.com/zdhsoft/archive/2017/05/27/214960.html鍐摐鍐摐Sat, 27 May 2017 09:35:00 GMThttp://m.shnenglu.com/zdhsoft/archive/2017/05/27/214960.htmlhttp://m.shnenglu.com/zdhsoft/comments/214960.htmlhttp://m.shnenglu.com/zdhsoft/archive/2017/05/27/214960.html#Feedback0http://m.shnenglu.com/zdhsoft/comments/commentRss/214960.htmlhttp://m.shnenglu.com/zdhsoft/services/trackbacks/214960.html

浣跨敤appium杈撳叆涓枃錛屽彂鐜板ソ鎱紒鑷沖皯5縐掍互涓婏紝濡傛灉鍦ㄨ繖鏍風殑鎯呭喌涓嬪仛嫻嬭瘯錛岃繖灝卞ソ鎮插墽浜嗐?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://m.shnenglu.com/zdhsoft/archive/2017/02/23/214695.html鍐摐鍐摐Thu, 23 Feb 2017 12:35:00 GMThttp://m.shnenglu.com/zdhsoft/archive/2017/02/23/214695.htmlhttp://m.shnenglu.com/zdhsoft/comments/214695.htmlhttp://m.shnenglu.com/zdhsoft/archive/2017/02/23/214695.html#Feedback0http://m.shnenglu.com/zdhsoft/comments/commentRss/214695.htmlhttp://m.shnenglu.com/zdhsoft/services/trackbacks/214695.html
鍩轟簬appium婧愮爜 1.6.3 榪愯,鍙戠幇榪愯涓孌墊椂闂村悗,浼氬嚭鐜板唴瀛樻孩鍑?
鐢╪ode-heapdump鐢熸垚heap蹇収 鍙戠幇澶氫簡寰堝瀛楃涓插璞?鍐呭濡備笅  闃呰鍏ㄦ枃

鍐摐 2017-02-23 20:35 鍙戣〃璇勮
]]>
浣跨敤node heapdumphttp://m.shnenglu.com/zdhsoft/archive/2017/02/23/214693.html鍐摐鍐摐Thu, 23 Feb 2017 06:28:00 GMThttp://m.shnenglu.com/zdhsoft/archive/2017/02/23/214693.htmlhttp://m.shnenglu.com/zdhsoft/comments/214693.htmlhttp://m.shnenglu.com/zdhsoft/archive/2017/02/23/214693.html#Feedback0http://m.shnenglu.com/zdhsoft/comments/commentRss/214693.htmlhttp://m.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://m.shnenglu.com/zdhsoft/archive/2017/02/20/214688.html鍐摐鍐摐Mon, 20 Feb 2017 06:31:00 GMThttp://m.shnenglu.com/zdhsoft/archive/2017/02/20/214688.htmlhttp://m.shnenglu.com/zdhsoft/comments/214688.htmlhttp://m.shnenglu.com/zdhsoft/archive/2017/02/20/214688.html#Feedback0http://m.shnenglu.com/zdhsoft/comments/commentRss/214688.htmlhttp://m.shnenglu.com/zdhsoft/services/trackbacks/214688.html闃呰鍏ㄦ枃

鍐摐 2017-02-20 14:31 鍙戣〃璇勮
]]>
appium鐨刄iAutomator exited unexpectedly(1.6.3)http://m.shnenglu.com/zdhsoft/archive/2017/02/08/214663.html鍐摐鍐摐Wed, 08 Feb 2017 06:39:00 GMThttp://m.shnenglu.com/zdhsoft/archive/2017/02/08/214663.htmlhttp://m.shnenglu.com/zdhsoft/comments/214663.htmlhttp://m.shnenglu.com/zdhsoft/archive/2017/02/08/214663.html#Feedback0http://m.shnenglu.com/zdhsoft/comments/commentRss/214663.htmlhttp://m.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://m.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://m.shnenglu.com/zdhsoft/archive/2017/01/06/214578.html</guid><wfw:comment>http://m.shnenglu.com/zdhsoft/comments/214578.html</wfw:comment><comments>http://m.shnenglu.com/zdhsoft/archive/2017/01/06/214578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zdhsoft/comments/commentRss/214578.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zdhsoft/services/trackbacks/214578.html</trackback:ping><description><![CDATA[     鎽樿: 浠巃ppium 1.3.3鍚?灝辨敮鎸乽nicode杈撳叆,涔熷氨鏄彲浠ヨ緭鍏ヤ腑鏂囦簡. <br>瀹為檯榪愯鐜錛?nbsp; <a href='http://m.shnenglu.com/zdhsoft/archive/2017/01/06/214578.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/zdhsoft/aggbug/214578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zdhsoft/" target="_blank">鍐摐</a> 2017-01-06 17:45 <a href="http://m.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://m.shnenglu.com/zdhsoft/archive/2016/12/22/214533.html鍐摐鍐摐Thu, 22 Dec 2016 03:15:00 GMThttp://m.shnenglu.com/zdhsoft/archive/2016/12/22/214533.htmlhttp://m.shnenglu.com/zdhsoft/comments/214533.htmlhttp://m.shnenglu.com/zdhsoft/archive/2016/12/22/214533.html#Feedback0http://m.shnenglu.com/zdhsoft/comments/commentRss/214533.htmlhttp://m.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://m.shnenglu.com/zdhsoft/archive/2016/12/20/214524.html鍐摐鍐摐Tue, 20 Dec 2016 09:34:00 GMThttp://m.shnenglu.com/zdhsoft/archive/2016/12/20/214524.htmlhttp://m.shnenglu.com/zdhsoft/comments/214524.htmlhttp://m.shnenglu.com/zdhsoft/archive/2016/12/20/214524.html#Feedback0http://m.shnenglu.com/zdhsoft/comments/commentRss/214524.htmlhttp://m.shnenglu.com/zdhsoft/services/trackbacks/214524.html闃呰鍏ㄦ枃

鍐摐 2016-12-20 17:34 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产日韩久久| 午夜在线精品偷拍| 欧美一区激情| 午夜精品久久久久久久99樱桃 | 国产永久精品大片wwwapp| 国产精品久久久久久久免费软件| 亚洲精品123区| 欧美高清在线精品一区| 亚洲国产精品www| 日韩天堂在线观看| 亚洲欧美日韩视频一区| 久久精品亚洲精品| 欧美成年网站| 国产精品二区三区四区| 国产一区二区三区直播精品电影| 在线观看一区| 99热这里只有成人精品国产| 99热在这里有精品免费| 国产欧美精品一区aⅴ影院| 亚洲欧美一区二区三区极速播放| 欧美一区综合| 久久精品国产精品亚洲综合| 性欧美暴力猛交69hd| 欧美一区激情| 久久视频一区| 欧美国产日韩xxxxx| 欧美日韩和欧美的一区二区| 国产精品久久久久久久久久ktv| 国产精品亚发布| 一区二区亚洲精品国产| 在线观看视频一区二区| 日韩午夜精品| 欧美中文在线免费| 欧美xxx成人| 久热精品视频在线观看一区| 欧美肥婆在线| 欧美精品在线一区| 国产精品成人v| 国产欧美视频在线观看| 精品成人在线| 亚洲香蕉在线观看| 麻豆成人91精品二区三区| 亚洲国产日韩综合一区| 亚洲图片欧洲图片日韩av| 久久成人免费网| 欧美日韩国产一区二区三区| 国产欧美一区二区三区国产幕精品| 狠狠噜噜久久| 亚洲视频免费在线| 亚洲一区高清| 欧美在线视频日韩| 久久成人羞羞网站| 久久精品99| 久久综合电影一区| 久久亚洲图片| 亚洲国产cao| 夜夜嗨av一区二区三区网站四季av| 一区二区三区高清不卡| 亚洲午夜伦理| 免费观看成人网| 亚洲天堂视频在线观看| 亚洲自拍电影| 欧美14一18处毛片| 欧美在线视屏| 国产精品久久福利| 91久久久久久| 老牛嫩草一区二区三区日本| 一本色道久久综合亚洲精品不| 久久手机免费观看| 国模一区二区三区| 亚洲欧美日韩精品| 亚洲精品乱码久久久久久蜜桃麻豆| 99精品热视频| 久久精品道一区二区三区| 欧美福利一区二区| 亚洲高清视频中文字幕| 狠狠色香婷婷久久亚洲精品| 亚洲国产第一| 亚洲免费在线| 制服丝袜激情欧洲亚洲| 欧美日韩国产精品一区| 一本色道久久综合亚洲精品按摩| 欧美激情视频一区二区三区免费 | 欧美三级在线视频| 亚洲最新在线| 亚洲另类一区二区| 欧美日韩精品福利| 中文亚洲字幕| 亚洲与欧洲av电影| 国产午夜精品美女视频明星a级| 午夜精彩国产免费不卡不顿大片| 欧美电影在线观看完整版| 一区二区三区视频在线| 国产精品久久久久一区二区三区| 亚洲综合国产激情另类一区| 亚洲免费视频一区二区| 国产一区二区日韩| 欧美成人dvd在线视频| 狂野欧美性猛交xxxx巴西| 亚洲人成欧美中文字幕| 日韩视频亚洲视频| 国产精品一区二区久久精品| 久久九九久精品国产免费直播| 久久xxxx| 亚洲美女在线一区| 亚洲在线第一页| 国内视频一区| 亚洲激情在线播放| 国产精品mm| 久久久久综合| 欧美精品亚洲一区二区在线播放| 久久亚洲影音av资源网| 在线观看日韩一区| 亚洲精品视频中文字幕| 国产偷自视频区视频一区二区| 老司机精品导航| 欧美日韩中文另类| 亚洲人成亚洲人成在线观看图片| 久久天天狠狠| 欧美成人午夜剧场免费观看| 亚洲一区成人| 久久久久久一区二区| av不卡在线观看| 久久久精品日韩| 亚洲性av在线| 免费国产自线拍一欧美视频| 91久久国产综合久久蜜月精品 | 亚洲夜间福利| 久久精品欧美日韩精品| 日韩午夜剧场| 久久久www| 午夜精品国产更新| 欧美成人免费网站| 久久色在线观看| 国产精品久久久久久久浪潮网站| 欧美成人性生活| 国产小视频国产精品| 噜噜噜噜噜久久久久久91| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 亚洲精品五月天| 国产一区视频在线看| 日韩视频一区二区| 99精品免费视频| 农村妇女精品| 欧美大片在线看| 激情成人在线视频| 性伦欧美刺激片在线观看| 亚洲宅男天堂在线观看无病毒| 免费影视亚洲| 欧美电影电视剧在线观看| 国产一区二区三区视频在线观看| 一本大道久久a久久综合婷婷| 亚洲人成网站777色婷婷| 久久久久久久91| 午夜视频在线观看一区二区三区| 欧美成人四级电影| 亚洲电影在线看| 亚洲级视频在线观看免费1级| 久久精品欧美| 免费看成人av| 最新中文字幕一区二区三区| 久久久久亚洲综合| 欧美岛国在线观看| 亚洲电影免费观看高清完整版在线| 欧美一区二视频在线免费观看| 久久国产成人| 国内久久婷婷综合| 一区二区三区日韩欧美精品| 一区二区欧美日韩| 欧美性猛交一区二区三区精品| 一区二区欧美激情| 亚洲欧美在线播放| 国产在线成人| 老司机精品视频网站| 亚洲国产欧美在线人成| 亚洲免费电影在线观看| 欧美欧美全黄| 亚洲一区二区在线播放| 欧美在线播放一区二区| 欧美激情国产高清| 欧美成人一品| 亚洲一区三区视频在线观看| 亚洲欧美视频一区| 久久久久国内| 91久久精品日日躁夜夜躁欧美| 欧美99在线视频观看| 99精品视频免费观看视频| 亚洲欧美日韩国产成人精品影院 | 一区二区三区免费网站| 欧美一级大片在线观看| 国产综合网站| 欧美国产在线电影| 亚洲自拍偷拍一区| 欧美成人精品在线观看| 悠悠资源网亚洲青| 亚洲一区二区视频在线| 亚洲国产合集| 欧美区高清在线| 欧美在线视频日韩| 日韩一级在线观看|