2016-07-25 13 views
7

का उपयोग करके एंड्रॉइड में ज़ूम कार्रवाई करें क्या कोई जानता है कि एपियम पाइथन क्लाइंट के माध्यम से एंड्रॉइड में तत्व को ज़ूम कैसे करें?ऐपियम-पायथन-क्लाइंट

मैं वर्तमान में

self.driver.zoom(self.element, percent) उपयोग कर रहा हूँ, लेकिन यह एक त्रुटि

self.driver.zoom(self.element, percent) 
File "/usr/local/lib/python2.7/site-packages/appium/webdriver/webdriver.py", line 308, in zoom 
self.execute_script('mobile: pinchOpen', opts) 
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 461, in execute_script 
{'script': script, 'args':converted_args})['value'] 
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 233, in execute 
self.error_handler.check_response(response) 
File "/usr/local/lib/python2.7/site-packages/appium/webdriver/errorhandler.py", line 29, in check_response 
raise wde 
WebDriverException: Message: Method has not yet been implemented 

मैं भी MultiAction के माध्यम से करने की कोशिश की है देता है।

loc = self.element.location 
print loc 
xx, yy = loc["x"], loc["y"] 
xx=700 
action1 = TouchAction(self.driver) 
action1.long_press(x=xx, y=yy).move_to(x=0, y=1000).release() 
action2 = TouchAction(self.driver) 
action2.long_press(x=xx, y=yy).move_to(x=0, y=-1000).release() 
m_action = MultiAction(self.driver) 
m_action.add(action1, action2) 
m_action.perform() 

लेकिन फिर से यह किसी भी zoom.Instead प्रदर्शन नहीं करता यह नीचे स्क्रॉल list.Does किसी को यहाँ क्या गलत है के बारे में कोई विचार है।

Appium Logs

[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"action","action":"element:getLocation","params":{"elementId":"83"}} 
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION 
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: getLocation 
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":0,"value":{"x":0,"y":1225}} 
[debug] [AndroidBootstrap] Received command result from bootstrap 
[MJSONWP] Responding to client with driver.getLocation() result: {"x":0,"y":1225} 
[HTTP] <-- GET /wd/hub/session/c1a4d17f-0dc6-4445-bfad-776ec65bddb5/element/83/location 200 26 ms - 88 
[HTTP] --> POST /wd/hub/session/c1a4d17f-0dc6-4445-bfad-776ec65bddb5/touch/multi/perform {"sessionId":"c1a4d17f-0dc6-4445-bfad-776ec65bddb5","actions":[[{"action":"longPress","options":{"y":1225,"x":700,"duration":1000}},{"action":"moveTo","options":{"y":1000,"x":0}},{"action":"release","options":{}}],[{"action":"longPress","options":{"y":1225,"x":700,"duration":1000}},{"action":"moveTo","options":{"y":-1000,"x":0}},{"action":"release","options":{}}]]} 
[MJSONWP] Calling AppiumDriver.performMultiAction() with args: [[[{"action":"longPress","o... 
[debug] [AndroidBootstrap] Sending command to android: {"cmd":"action","action":"performMultiPointerGesture","params":{"actions":[[{"action":"longPress","time":0.005,"touch":{"y":1225,"x":700,"duration":1000}},{"action":"moveTo","time":0.01,"touch":{"y":2225,"x":700}}],[{"action":"longPress","time":0.005,"touch":{"y":1225,"x":700,"duration":1000}},{"action":"moveTo","time":0.01,"touch":{"y":225,"x":700}}]]}} 
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"action","action":"performMultiPointerGesture","params":{"actions":[[{"action":"longPress","time":0.005,"touch":{"y":1225,"x":700,"duration":1000}},{"action":"moveTo","time":0.01,"touch":{"y":2225,"x":700}}],[{"action":"longPress","time":0.005,"touch":{"y":1225,"x":700,"duration":1000}},{"action":"moveTo","time":0.01,"touch":{"y":225,"x":700}}]]}} 
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION 
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: performMultiPointerGesture 
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":0,"value":"OK"} 
[debug] [AndroidBootstrap] Received command result from bootstrap 
[MJSONWP] Responding to client with driver.performMultiAction() result: "OK" 
[HTTP] <-- POST /wd/hub/session/c1a4d17f-0dc6-4445-bfad-776ec65bddb5/touch/multi/perform 200 133 ms - 76 
[HTTP] --> DELETE /wd/hub/session/c1a4d17f-0dc6-4445-bfad-776ec65bddb5 {} 

उत्तर

4

MultiAction प्रयास अच्छा लग रहा है, लेकिन मेरे फ़ोन की मूल कैमरा एप्लिकेशन पर थोड़ा परीक्षण के बाद, मैं moveTo के बाद 500ms प्रतीक्षा() जोड़कर एक अच्छा ज़ूम इशारा प्राप्त करने में सक्षम था() :

# Zoom 
action1.long_press(x=xx, y=yy).move_to(x=0, y=50).wait(500).release() 
action2.long_press(x=xx, y=yy).move_to(x=0, y=-50).wait(500).release() 
m_action.add(action1, action2) 

# Pinch 
action3.long_press(x=xx, y=yy-50).move_to(x=0, y=50).wait(500).release() 
action4.long_press(x=xx, y=yy+50).move_to(x=0, y=-50).wait(500).release() 
m_action2.add(action3, action4) 

m_action.perform() 
m_action2.perform() 

इसके परिणामस्वरूप कैमरा ऐप में एक अच्छा और धीमा ज़ूम हुआ। प्रतीक्षा के बिना() इशारा बहुत जल्दी थे और वास्तव में बहुत कुछ नहीं किया था। https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/touch-actions.md

मैं के साथ मेरा कैमरा अनुप्रयोग में xx और yy स्क्रीन के बीच करने के लिए सेट:

यह Github पर Appium के दस्तावेज़ पर उल्लेख किया गया है, कि प्रतीक्षा() एक इशारा के समय को नियंत्रित करने के लिए इस्तेमाल किया जा सकता
xx = self.driver.get_window_size()['width']/2 
yy = self.driver.get_window_size()['height']/2 

कृपया याद रखें कि निर्देशांक कभी भी डिवाइस स्क्रीन सीमा से बाहर नहीं जाना चाहिए, इसलिए स्क्रीन सीमाओं के लिए जांच उपयोगी हो सकती है, अगर आप इसे पुनः उपयोग करने योग्य फ़ंक्शन में बनाना चाहते हैं।

मैं Chrome को स्वचालित करते समय मल्टीएक्शन जेस्चर का भी उपयोग नहीं कर सका (NATIVE_APP संदर्भ में बदलते समय भी नहीं। इशारों का कोई प्रभाव नहीं पड़ा।) इसलिए यह संभव है कि WebView परिदृश्यों पर मल्टीएक्शन का उपयोग करना समर्थित न हो।

+1

मुझे लगता है कि 500ms अधिकांश मामलों में ठीक काम करेंगे। मैंने दस्तावेज़ों के लिए एक लिंक जोड़ा जहां 'प्रतीक्षा' का उल्लेख वास्तव में एक इशारा करने के उद्देश्य के लिए किया गया था। क्या आप मेरे उत्तर को स्वीकार कर सकते हैं, अगर इससे आपकी मदद मिलती है? – Domestus

+0

उत्तर में एक चुटकी इशारा जोड़ा गया। शुरुआत समन्वय और दिशा को समायोजित करके बिल्कुल विपरीत इशारा के साथ काम करने के लिए माना जाता है। – Domestus

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^