Sample code to accompany the appiumpro.com newsletter
cloudgrey-io / appiumpro Goto Github PK
View Code? Open in Web Editor NEWSample code to accompany the appiumpro.com newsletter
License: Apache License 2.0
Sample code to accompany the appiumpro.com newsletter
License: Apache License 2.0
Hi All,
Getting the following Error , I have created my own data for Amazon Android App. Created Models with the guidance https://medium.com/testdotai/training-data-for-app-classifier-f217dc005523 . Getting this issue , while searching for a 'search' Icon
[debug] [WD Proxy] Got response with status 200: {"sessionId":"136b372d-1f75-42bf-b557-366a916766dc","status":0,"value":true}
[debug] [W3C (1856affc)] Encountered internal error running command: Error: Prediction result array had 4 elements but labels list had 106 elements. They need to match.
[debug] [W3C (1856affc)] at getConfidenceMap (/usr/local/lib/node_modules/appium/node_modules/test-ai-classifier/lib/classifier.js:130:11)
[debug] [W3C (1856affc)] at predictionsFromImages (/usr/local/lib/node_modules/appium/node_modules/test-ai-classifier/lib/classifier.js:101:21)
[debug] [W3C (1856affc)] at getMatchingElements (/usr/local/lib/node_modules/appium/node_modules/test-ai-classifier/lib/classifier.js:210:17)
[debug] [W3C (1856affc)] at Object.find (/usr/local/lib/node_modules/appium/node_modules/test-ai-classifier/lib/classifier.js:275:12)
[debug] [W3C (1856affc)] at condition (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/find.js:158:16)
[debug] [W3C (1856affc)] at wrappedCondFn (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/timeout.js:157:12)
[debug] [W3C (1856affc)] at spin (/usr/local/lib/node_modules/appium/node_modules/asyncbox/lib/asyncbox.js:112:20)
[debug] [W3C (1856affc)] at waitForCondition (/usr/local/lib/node_modules/appium/node_modules/asyncbox/lib/asyncbox.js:125:10)
[debug] [W3C (1856affc)] at AndroidUiautomator2Driver.implicitWaitForCondition (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/timeout.js:159:10)
[debug] [W3C (1856affc)] at AndroidUiautomator2Driver.findByCustom (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/find.js:172:5)
[debug] [W3C (1856affc)] at AndroidUiautomator2Driver.findElement (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/find.js:50:12)
[HTTP] <-- POST /wd/hub/session/1856affc-ac0f-4e66-b9bb-5210dd5dfd14/element 500 14949 ms - 681
[HTTP]
When choose Leaks as a performance checker and then startPerfRecord, app will record 5 seconds then will be stopped without results
Appium Log:
Got response with status 200: {"value":"The application under test with bundle id ' ' is not running, possibly crashed"
Hi,
Not really an issue, more a question.
I am also using the yml file to configure my device farm run and I wanted to know if you know a way with Appium to set up the device location ( lat and long) directly from this yml file.
I know Appium has a fonction to setLocation but I cannot manage to find one working in the yml file...
Just wondering!
Thanks a lot
While testing image recognition, I was not able to make it work.
Appium Desktop 1.7.0
[2018-09-12 10:54:41][BaseDriver] Verifying screenshot size and aspect ratio
[2018-09-12 10:54:41][BaseDriver] Screenshot size matched screen size
[2018-09-12 10:54:41][W3C] Encountered internal error running command: Error: opencv4nodejs module is required to use OpenCV features. Please install it first (npm i -g opencv4nodejs) and restart Appium. Read https://github.com/justadudewhohacks/opencv4nodejs#how-to-install for more details on this topic.
[2018-09-12 10:54:41][W3C] at initOpenCV (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-support/lib/image-util.js:100:11)
[2018-09-12 10:54:41][W3C] at Object.getImageOccurrence$ (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-support/lib/image-util.js:420:3)
[2018-09-12 10:54:41][W3C] at tryCatch (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
Nevertheless, opencv4nodejs is already installed
$ npm list -g --depth=0
/usr/local/lib
├── [email protected]
└── [email protected]
I have tried the same code in https://github.com/cloudgrey-io/appiumpro/blob/master/java/src/test/java/Edition069_Audio_Capture.java and i faced the below exception
{java.io.IOException: Stream closed FFmpeg capturer for duration }
any idea ?
Python~
I am trying to scroll using the methods provided here but I endup with an error any Idea?
I am calling the following in my test I am using appium java client 7.0.0
scroll(ScrollDirection.DOWN);
But I am getting following error...
org.openqa.selenium.UnsupportedCommandException: actions
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.10'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:218)
at org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:117)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:152)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
at org.openqa.selenium.remote.RemoteWebDriver.perform(RemoteWebDriver.java:618)
at com.test.qa.pages.DriverPageUtil.swipe(DriverPageUtil.java:368)
I am facing the following issue in Mac System with Android Device , with Walmart App
Error is :
Encountered internal error running command: Error: Could not load your custom find module 'ai'. Did you put it somewhere Appium can 'require' it? Original error: Error: Cannot find module 'test-ai-classifier'
Version details : Node : v10.16.0 npm : 6.9.0 . Appium Desktop Mac Version : 1.10.0
Source Code :
HashMap<String, String> customFindModules = new HashMap<>();
customFindModules.put("ai", "test-ai-classifier");
dc.setCapability("appPackage","com.walmart.android");
dc.setCapability("appActivity", "com.walmart.android.app.main.MainActivity");
dc.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.0.1");
dc.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.10.0");
dc.setCapability("customFindModules", customFindModules);
dc.setCapability("shouldUseCompactResponses", false);
Identifiers Used :
driver.findElement(MobileBy.custom("cart")).click();
driver.findElement(MobileBy.custom("search")).click();
Note : No errors found while invoking require("test-ai-classifier"); under node console from Appium installed folder.
Please help me out , If some one has find similar issues.
Thanks in Advance.
there seems to be something missing on the gradle file, there's no test
task.
➜ appiumpro git:(master) gradle cleanTest test --tests "Edition028_Parallel_Testing_iO*"
FAILURE: Build failed with an exception.
* What went wrong:
Task 'cleanTest' not found in root project 'appiumpro'.
* Try:
Run gradle tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 0s
@jlipps when trying to start performance testing for app i faced the below error
Unknown mobile command "startPerfRecord"
Facing this issues in your Automate Mac Desktop App code(App name: Activity Monitor). Also, I can't be able to find elements of any Mac App with this method.. :(
Hi, regarding "Edition094_Events_API.java", is "io.appium.java_client.serverevents.ServerEvents" only available in java-client-7.2.0, because I can't find this package? Thanks.
Hi All , facing the following issue , while locating the element with ai.
[debug] [WD Proxy] Got response with status 200: "{"sessionId":"5b49b524-d285-4e48-a12b-e74bd1e1bea3","status":0,"value":"iVBORw0KGgoAAAANSUhEUgAAAtAAAAXwCAYAAAB7XHwkAAAABHNCSVQICAgIfAhkiAAAIABJREFU\neJzs3XdYVGfePvCb3mFARES62FAZFQtqIrZYUmxE3USDUdM22RA1ebPvu\/vGRLO7v3eLJWbT14ik\nGjWiaWqighU7oIIFpKoUlaF35vfHOMcZ5kw5MDS5P9eVKzPnnJnzMDPCPc95nu9jYe0\/WQkiIiIi\nIjKJZUc3gIiIiIioK2GAJiIiIiKSgAGaiIiIiEgCBmgiIiIiIgkYoImIiIiIJGCAJiIiIiKSgAGa\niIiIiEgCBmgiIiIiIgkYoImIiIiIJGCAJiIiIiKSgAGaiIiIiEgCBmgiIiIiIgkYoImIiIiIJGCA\nJiIiIiKSgAGaiIiIiEgCBmgiIiIiIgkYoImIiIiIJGCAJiIiIiKSgAGaiIiIiEgCBmgiIiIiIgkY\noImIiIiIJGCAJiIiIiKSgAGaiIiIiEgCBmgiIiIiIgkYoKnTc3FyhLOTg8nHy1yd4eLk2OL9RERE\nnc1L0bPx3394Gg72dh3dFAJg3dENoI7l7uaC0vIKODs6wMrKCqXlFWhqUmod80zUNMx7dALmLv9f\nYduuzX\/B9z8fxhc797dZ2\/oF++KFp59AcEBvKJXAtax8fPrVD8jKvSV6\/LiRQ\/BM1CPo1dMDAJB3\nswifff0jLl7OMmk\/ERFRZ2FvZwtraytUVFbD3c0FkRFy2NvZwsc7EZnZN8x2nvCwAZg1bRz6B\/vB\n3s7WbM9rTE1tHa5ez8Oe\/cdxNvWKyY9zdLCDlaUVyiur2rB1xjFAd2N9vD3h4uwIRVkFfH284Ozk\ngOSL11DX1NDRTQMAxCydB6+e7vj+58OwsrLE44+MwytL5uCNdz\...
[ai] Turning screenshot into HTML image for use with canvas
[ai] Getting screenshot slices for each element
[ai] Making label predictions based on element images
tf.loadFrozenModel() is going away. Use tf.loadGraphModel() instead, and note the positional argument changes. You can disable deprecation warnings with tf.disableDeprecationWarnings().
tf.fromPixels() is renamed to tf.browser.fromPixels(), please switch to the new method as the old method will be removed in TensorFlow.js 1.0. You can disable deprecation warnings with tf.disableDeprecationWarnings().
[ai] Predictions for 29 element(s) took 345.222 seconds
[ai] Found 0 matching elements
[ai] Resetting element response attribute setting to original value: ""
[UiAutomator2] Forwarding the following settings to the UiAutomator2 server: ["elementResponseAttributes"]
[debug] [WD Proxy] Matched '/appium/settings' to command name 'updateSettings'
Hi @jlipps,
I'm getting following errors when running my test script written in python for mobile app automation using test-ai-classifier as a customrFindModule in appium. However, my test script run fine it just break where i'm using test-ai-classifier and also it terminate my appium server after following errors.
Error logs in Appium Server
node-pre-gyp info This Node instance does not support builds for N-API version 4
node-pre-gyp info This Node instance does not support builds for N-API version 5
node-pre-gyp info This Node instance does not support builds for N-API version 4
node-pre-gyp info This Node instance does not support builds for N-API version 5
2020-02-16 14:08:08.238080: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-02-16 14:08:08.274034: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2299965000 Hz
2020-02-16 14:08:08.274316: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x454f530 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-02-16 14:08:08.274337: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
node: symbol lookup error: /usr/local/lib/node_modules/test-ai-classifier/build/Release/test-ai-classifier.node: undefined symbol: TF_Version
System Info:
OS: Ubuntu 18.04.4
OS Type: 64-bit
Processor: Intel® Core™ i5-6300HQ CPU @ 2.30GHz × 4
Graphics: Intel® HD Graphics 530 (Skylake GT2)
GNOME: 3.28.2
Node version: v10.15.0
NPM version: 6.13.7
Appium version: 1.16.0
TensorFlow: @tensorflow/[email protected] (from /../../node_modules/test-ai-classifier/node_modules/@tensorflow/tfjs/package.json)
So, how I can solve these issues?
Thanks in advance!
Python
Full log:
[BaseDriver] Didn't know about setting 'elementResponseAttributes'. Are you sure you spelled it correctly? Proceeding anyway. Valid settings: imageMatchThreshold,fixImageFindScreenshotDims,fixImageTemplateSize,fixImageTemplateScale,defaultImageTemplateScale,checkForImageElementStaleness,autoUpdateImageElementPosition,imageElementTapStrategy,ignoreUnimportantViews
[ai] Setting confidence threshold to default value of 0.2
[ai] Retrieving data for all leaf-node elements on screen
[debug] [BaseDriver] Valid locator strategies for this request: xpath, id, class name, accessibility id, -android uiautomator
[debug] [BaseDriver] Waiting up to 0 ms for condition
[debug] [AndroidBootstrap] Sending command to android: {"cmd":"action","action":"find","params":{"strategy":"xpath","selector":"//[not(child::)]","context":"","multiple":true}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"action","action":"find","params":{"strategy":"xpath","selector":"//[not(child::)]","context":"","multiple":true}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: find
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Finding '//[not(child::)]' using 'XPATH' with the contextId: '' multiple: true
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageButton, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageButton, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageView, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageView, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.View, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.View, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageView, INSTANCE=1]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageView, INSTANCE=1]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.view.View, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.view.View, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.Button, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.Button, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.Button, INSTANCE=1]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.Button, INSTANCE=1]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.Button, INSTANCE=2]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.Button, INSTANCE=2]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.Button, INSTANCE=3]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.Button, INSTANCE=3]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.view.View, INSTANCE=1]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.view.View, INSTANCE=1]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageView, INSTANCE=2]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageView, INSTANCE=2]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=1]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=1]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=2]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=2]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=3]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=3]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.FrameLayout, INSTANCE=9]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.FrameLayout, INSTANCE=9]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageView, INSTANCE=3]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageView, INSTANCE=3]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=4]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=4]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=5]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=5]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.view.View, INSTANCE=2]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.view.View, INSTANCE=2]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.view.View, INSTANCE=3]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.view.View, INSTANCE=3]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.view.View, INSTANCE=4]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.view.View, INSTANCE=4]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.view.View, INSTANCE=5]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.view.View, INSTANCE=5]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageView, INSTANCE=4]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageView, INSTANCE=4]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.view.View, INSTANCE=6]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.view.View, INSTANCE=6]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.RelativeLayout, INSTANCE=5]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.RelativeLayout, INSTANCE=5]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageView, INSTANCE=5]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageView, INSTANCE=5]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.EditText, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.EditText, INSTANCE=0]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageView, INSTANCE=6]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageView, INSTANCE=6]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.view.View, INSTANCE=7]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.view.View, INSTANCE=7]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":0,"value":[{"ELEMENT":"1"},{"ELEMENT":"2"},{"ELEMENT":"3"},{"ELEMENT":"4"},{"ELEMENT":"5"},{"ELEMENT":"6"},{"ELEMENT":"7"},{"ELEMENT":"8"},{"ELEMENT":"9"},{"ELEMENT":"10"},{"ELEMENT":"11"},{"ELEMENT":"12"},{"ELEMENT":"13"},{"ELEMENT":"14"},{"ELEMENT":"15"},{"ELEMENT":"16"},{"ELEMENT":"17"},{"ELEMENT":"18"},{"ELEMENT":"19"},{"ELEMENT":"20"},{"ELEMENT":"21"},{"ELEMENT":"22"},{"ELEMENT":"23"},{"ELEMENT":"24"},{"ELEMENT":"25"},{"ELEMENT":"26"}]}
[debug] [AndroidBootstrap] Received command result from bootstrap
[ai] Getting window size in case we need to scale screenshot
[debug] [AndroidBootstrap] Sending command to android: {"cmd":"action","action":"getDeviceSize","params":{}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"action","action":"getDeviceSize","params":{}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: getDeviceSize
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":0,"value":{"height":1424,"width":720}}
[debug] [AndroidBootstrap] Received command result from bootstrap
[ai] Getting screenshot to use for classifier
[ai] Turning screenshot into HTML image for use with canvas
[ai] Getting screenshot slices for each element
[ai] Resetting element response attribute setting to original value: undefined
[debug] [W3C (75e57f0c)] Encountered internal error running command: TypeError: Cannot destructure property x of 'undefined' or 'null'.
[debug] [W3C (75e57f0c)] at getCanvasByRect (/usr/local/lib/node_modules/appium/node_modules/test-ai-classifier/lib/image.js:58:9)
[debug] [W3C (75e57f0c)] at /usr/local/lib/node_modules/appium/node_modules/test-ai-classifier/lib/classifier.js:176:28
[debug] [W3C (75e57f0c)] at Array.map ()
[debug] [W3C (75e57f0c)] at asyncmap (/usr/local/lib/node_modules/appium/node_modules/asyncbox/lib/asyncbox.js:74:26)
[debug] [W3C (75e57f0c)] at getElementImages (/usr/local/lib/node_modules/appium/node_modules/test-ai-classifier/lib/classifier.js:174:30)
[debug] [W3C (75e57f0c)] at Object.find (/usr/local/lib/node_modules/appium/node_modules/test-ai-classifier/lib/classifier.js:274:32)
[debug] [W3C (75e57f0c)] at condition (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/find.js:158:16)
[debug] [W3C (75e57f0c)] at wrappedCondFn (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/timeout.js:157:12)
[debug] [W3C (75e57f0c)] at spin (/usr/local/lib/node_modules/appium/node_modules/asyncbox/lib/asyncbox.js:112:20)
[debug] [W3C (75e57f0c)] at waitForCondition (/usr/local/lib/node_modules/appium/node_modules/asyncbox/lib/asyncbox.js:125:10)
[debug] [W3C (75e57f0c)] at AndroidDriver.implicitWaitForCondition (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/timeout.js:159:10)
[debug] [W3C (75e57f0c)] at AndroidDriver.findByCustom (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/find.js:172:5)
[debug] [W3C (75e57f0c)] at AndroidDriver.findElement (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/find.js:50:12)
[HTTP] <-- POST /wd/hub/session/75e57f0c-9382-41b0-bc46-6d74ddf274e0/element 500 3688 ms - 611
[HTTP]
[Logcat] Logcat terminated with code 0, signal null
[UiAutomator] UiAutomator exited unexpectedly with code 0, signal null
[debug] [UiAutomator] Moving to state 'stopped'
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Could not load your custom find module 'ai'. Did you put it somewhere Appium can 'require' it? Original error: Error: Cannot find module 'test-ai-classifier'
Capabilities that I'm using:
HashMap<String, String> customFindModules = new HashMap<>();
customFindModules.put("ai", "test-ai-classifier");
capabilities.setCapability("customFindModules", customFindModules);
capabilities.setCapability("shouldUseCompactResponses", false);
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.9.2-beta.2");
driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4725/wd/hub"),
capabilities);
It fails on clicking the search element:
private By search = MobileBy.custom("search");
@Test
public void testFindElementUsingAI() {
driver.findElement(search).click();
}
Hello,
I am seeing a weird issue, setup is I have an Android and IOS device connected to hub, when I execute my script, the request to Grid happens successfully to create the session, but the request for Android device goes to IOS port and vice versa
I am trying to implement zoom in and zoom out in my application. Now when I try to do it in my unit test it is working as expected. But when I try it in my integration test it gives an error. The only difference I can find in the two is that when the app is being launched in the unit test it works on dialect W3C and when I am working on the integration test it works on dialect OSS.
Please view the logs for error details:
https://appiumpro.com/editions/67-generating-touch-gestures-to-zoom-in-and-out-on-google-maps
https://gist.github.com/sudhanshuprakash/f38c2da3bb1b75aa39e5bac0050a5b66
https://gist.github.com/sudhanshuprakash/816c27075b31d5b4d7e3d64c6d986cac
Appium v1.10.0
Appium-Python-Client 0.36
selenium 3.141.0
caps:
'customFindModules': {'ai': 'test-ai-classifier'},
'shouldUseCompactResponses': 'false'
d.find_element_by_custom("close")
File "/Users/chen/.pyenv/versions/httprunner/lib/python3.6/site-packages/appium/webdriver/webdriver.py", line 423, in find_element_by_custom
return self.find_element(by=MobileBy.CUSTOM, value=selector)
File "/Users/chen/.pyenv/versions/httprunner/lib/python3.6/site-packages/appium/webdriver/webdriver.py", line 213, in find_element
'value': value})['value']
File "/Users/chen/.pyenv/versions/httprunner/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Users/chen/.pyenv/versions/httprunner/lib/python3.6/site-packages/appium/webdriver/errorhandler.py", line 29, in check_response
raise wde
File "/Users/chen/.pyenv/versions/httprunner/lib/python3.6/site-packages/appium/webdriver/errorhandler.py", line 24, in check_response
super(MobileErrorHandler, self).check_response(response)
File "/Users/chen/.pyenv/versions/httprunner/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Cannot destructure property `x` of 'undefined' or 'null'.
2019-01-21 17:39:39:907 - [HTTP] --> POST /wd/hub/session/da416914-dfea-4eef-9acf-6a2dceb6f154/element
2019-01-21 17:39:39:908 - [HTTP] {"using":"-custom","value":"close","sessionId":"da416914-dfea-4eef-9acf-6a2dceb6f154"}
2019-01-21 17:39:39:909 - [debug] [W3C (da416914)] Calling AppiumDriver.findElement() with args: ["-custom","close","da416914-dfea-4eef-9acf-6a2dceb6f154"]
2019-01-21 17:39:39:911 - [debug] [BaseDriver] Find plugin 'ai' requested; will attempt to use it from 'test-ai-classifier'
2019-01-21 17:39:39:912 - [debug] [BaseDriver] Waiting up to 0 ms for condition
2019-01-21 17:39:39:913 - [ai] Retrieving current settings to check element response attributes
2019-01-21 17:39:39:913 - [ai] We will need to update settings to include element response attributes
2019-01-21 17:39:39:914 - [BaseDriver] Didn't know about setting 'elementResponseAttributes'. Are you sure you spelled it correctly? Proceeding anyway. Valid settings: imageMatchThreshold,fixImageFindScreenshotDims,fixImageTemplateSize,checkForImageElementStaleness,autoUpdateImageElementPosition,imageElementTapStrategy,ignoreUnimportantViews
2019-01-21 17:39:39:914 - [ai] Setting confidence threshold to default value of 0.2
2019-01-21 17:39:39:914 - [ai] Retrieving data for all leaf-node elements on screen
2019-01-21 17:39:39:915 - [debug] [BaseDriver] Valid locator strategies for this request: xpath, id, class name, accessibility id, -android uiautomator
2019-01-21 17:39:39:915 - [debug] [BaseDriver] Waiting up to 0 ms for condition
2019-01-21 17:39:39:916 - [debug] [AndroidBootstrap] Sending command to android: {"cmd":"action","action":"find","params":{"strategy":"xpath","selector":"//*[not(child::*)]","context":"","multiple":true}}
2019-01-21 17:39:39:926 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"action","action":"find","params":{"strategy":"xpath","selector":"//*[not(child::*)]","context":"","multiple":true}}
2019-01-21 17:39:39:930 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
2019-01-21 17:39:39:939 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: find
2019-01-21 17:39:39:940 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Finding '//*[not(child::*)]' using 'XPATH' with the contextId: '' multiple: true
2019-01-21 17:39:40:183 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageView, INSTANCE=0]
2019-01-21 17:39:40:183 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageView, INSTANCE=0]
2019-01-21 17:39:40:184 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
2019-01-21 17:39:40:447 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=0]
2019-01-21 17:39:40:447 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=0]
2019-01-21 17:39:40:448 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
2019-01-21 17:39:40:502 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageView, INSTANCE=1]
2019-01-21 17:39:40:503 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageView, INSTANCE=1]
2019-01-21 17:39:40:503 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
2019-01-21 17:39:40:509 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=1]
2019-01-21 17:39:40:509 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=1]
2019-01-21 17:39:40:510 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
2019-01-21 17:39:40:525 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=2]
2019-01-21 17:39:40:525 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=2]
2019-01-21 17:39:40:526 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
2019-01-21 17:39:40:537 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.ImageView, INSTANCE=2]
2019-01-21 17:39:40:538 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.ImageView, INSTANCE=2]
2019-01-21 17:39:40:538 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
2019-01-21 17:39:40:538 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=3]
2019-01-21 17:39:40:545 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=3]
2019-01-21 17:39:40:545 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
2019-01-21 17:39:40:554 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=4]
2019-01-21 17:39:40:555 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=4]
2019-01-21 17:39:40:556 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
2019-01-21 17:39:40:563 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLASS=android.widget.TextView, INSTANCE=5]
2019-01-21 17:39:40:564 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLASS=android.widget.TextView, INSTANCE=5]
2019-01-21 17:39:40:564 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Selector ends with instance.
2019-01-21 17:39:40:572 - [debug] [AndroidBootstrap] Received command result from bootstrap
2019-01-21 17:39:40:572 - [ai] Getting window size in case we need to scale screenshot
2019-01-21 17:39:40:573 - [debug] [AndroidBootstrap] Sending command to android: {"cmd":"action","action":"getDeviceSize","params":{}}
2019-01-21 17:39:40:575 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":0,"value":[{"ELEMENT":"1"},{"ELEMENT":"2"},{"ELEMENT":"3"},{"ELEMENT":"4"},{"ELEMENT":"5"},{"ELEMENT":"6"},{"ELEMENT":"7"},{"ELEMENT":"8"},{"ELEMENT":"9"}]}
2019-01-21 17:39:40:578 - [debug] [AndroidBootstrap] Received command result from bootstrap
2019-01-21 17:39:40:579 - [ai] Getting screenshot to use for classifier
2019-01-21 17:39:40:579 - [debug] [ADB] Device API level: 28
2019-01-21 17:39:40:584 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"action","action":"getDeviceSize","params":{}}
2019-01-21 17:39:40:585 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
2019-01-21 17:39:40:585 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: getDeviceSize
2019-01-21 17:39:40:586 - [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":0,"value":{"height":1794,"width":1080}}
2019-01-21 17:39:41:596 - [ai] Turning screenshot into HTML image for use with canvas
2019-01-21 17:39:41:635 - [ai] Getting screenshot slices for each element
2019-01-21 17:39:41:639 - [ai] Resetting element response attribute setting to original value: undefined
2019-01-21 17:39:41:639 - [debug] [W3C (da416914)] Encountered internal error running command: TypeError: Cannot destructure property `x` of 'undefined' or 'null'.
2019-01-21 17:39:41:640 - [debug] [W3C (da416914)] at rect (/Users/chen/node_modules/test-ai-classifier/lib/image.js:58:33)
2019-01-21 17:39:41:640 - [debug] [W3C (da416914)] at elsAndImages (/Users/chen/node_modules/test-ai-classifier/lib/classifier.js:176:28)
2019-01-21 17:39:41:640 - [debug] [W3C (da416914)] at Array.map (<anonymous>)
2019-01-21 17:39:41:640 - [debug] [W3C (da416914)] at map (/Users/chen/node_modules/asyncbox/lib/asyncbox.js:75:26)
2019-01-21 17:39:41:640 - [debug] [W3C (da416914)] at Generator.next (<anonymous>)
2019-01-21 17:39:41:640 - [debug] [W3C (da416914)] at asyncGeneratorStep (/Users/chen/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)
2019-01-21 17:39:41:641 - [debug] [W3C (da416914)] at _next (/Users/chen/node_modules/@babel/runtime/helpers/asyncToGenerator.js:25:9)
2019-01-21 17:39:41:641 - [debug] [W3C (da416914)] at /Users/chen/node_modules/@babel/runtime/helpers/asyncToGenerator.js:32:7
2019-01-21 17:39:41:641 - [debug] [W3C (da416914)] at new Promise (<anonymous>)
2019-01-21 17:39:41:641 - [debug] [W3C (da416914)] at /Users/chen/node_modules/@babel/runtime/helpers/asyncToGenerator.js:21:12
2019-01-21 17:39:41:641 - [debug] [W3C (da416914)] at asyncmap (/Users/chen/node_modules/asyncbox/build/lib/asyncbox.js:160:20)
2019-01-21 17:39:41:641 - [debug] [W3C (da416914)] at getElementImages (/Users/chen/node_modules/test-ai-classifier/lib/classifier.js:174:30)
2019-01-21 17:39:41:642 - [debug] [W3C (da416914)] at Object.getElementImages (/Users/chen/node_modules/test-ai-classifier/lib/classifier.js:270:32)
2019-01-21 17:39:41:642 - [debug] [W3C (da416914)] at <anonymous>
2019-01-21 17:39:41:643 - [HTTP] <-- POST /wd/hub/session/da416914-dfea-4eef-9acf-6a2dceb6f154/element 500 1735 ms - 687
2019-01-21 17:39:41:643 - [HTTP]
^C2019-01-21 17:54:35:105 - [Appium] Received SIGINT - shutting down
2019-01-21 17:54:35:109 - [Logcat] Logcat terminated with code null, signal SIGINT
2019-01-21 17:54:35:110 - [UiAutomator] UiAutomator exited unexpectedly with code null, signal SIGINT
2019-01-21 17:54:35:110 - [debug] [UiAutomator] Moving to state 'stopped'
2019-01-21 17:54:35:112 - [debug] [AndroidDriver] Shutting down Android driver
I've build ipa file of TheApp
and executing both ios tests from Edition007_Deep_Linking class.
First (slow with step by step method) passing without issues, but second throw an WebDriverException with An unknown server-side error occurred while processing the command
error message.
Server logs: https://gist.github.com/ochubey/ebb6a551aaf52778e26bc9bfac640ea5
Client logs: https://gist.github.com/ochubey/61c7fe62f92018c0060aba5c840df0db
UPD: trying openning theapp://login/alice/mypassword
from Safari on real device - it's navegote to login page ... sometimes ... but never enter login/password.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.