मैं xcode 4.5 में स्वचालन का उपयोग कर एक टेस्ट स्क्रिप्ट लिखने की कोशिश कर रहा हूं।UIACollectionView कोशिकाओं बनाम दृश्यमान
मेरे पास UICollectionView
है और मैं वर्तमान में दिखाई देने वाले कुछ सेल पर क्लिक करना चाहता हूं।
Per documentation, मैं cells
संग्रह ध्यान में रखते हुए सभी कोशिकाओं लौटने की उम्मीद करनी चाहिए, और visibleCells
केवल वर्तमान में दृश्यमान लोगों लौटने के लिए।
इसके बजाय क्या मैं देख रहा हूँ कि कोशिकाओं केवल वर्तमान में दृश्यमान कोशिकाओं देता है, और visibleCells बुला 'undefined' is not a function (evaluating 'collection.visibleCells()')
var target = UIATarget.localTarget();
var collection = target.frontMostApp().mainWindow().collectionViews()[0];
UIALogger.logMessage("Looking in collection: " + collection);
UIALogger.logMessage("Cells: " + collection.cells() + " length " + collection.cells().length);
UIALogger.logMessage("Visible cells: " + collection.visibleCells());
कोड ऊपर सही UICollectionView
, दूसरी लॉग लाइन प्रिंट रिटर्न पर स्क्रिप्ट बंद हो जाता है:
Cells: [object UIAElementArray] length 12
हालांकि मेरे पास संग्रह दृश्य में 100 आइटम हैं, और तीसरी लॉग लाइन स्क्रिप्ट को क्रैश करती है।
क्या यह एक प्रलेखन/UIACollectionView बग है?
कोई विचार मैं स्वचालन को तब तक स्क्रॉल करने के लिए कैसे कह सकता हूं जब तक कि यह "मेरा सेल" नाम से सेल नहीं देखता? मैंने someCell.scrollToVisible
का उपयोग करने का प्रयास किया है, लेकिन मुझे सेल करने की आवश्यकता है, और ऐसा इसलिए नहीं है क्योंकि मैं इसे कोशिकाओं से नहीं प्राप्त कर सकता।
संपादित करें:
जोनाथन ने सुझाव दिया जैसा कि मैंने एक स्क्रॉल तक पाया समारोह क्रियान्वित किया है। यह थोड़ा कार्यान्वयन विशिष्ट है, इसलिए आपको शायद isCellWithName
को ट्वीक करने की आवश्यकता होगी। अगर हम किसी भी विचार के बारे में सोचते हैं, तो इसे संपादित करने में संकोच न करें, अगर हम थोड़ी देर में आवश्यक सेल नहीं मिला तो मैं भी एक ब्रेक जोड़ना चाहता हूं।
function isCellWithName(cell, name) {
return (cell.staticTexts()[0].name() == name);
}
function getCellWithName(array, name) {
for (var i = 0; i < array.length; i++) {
if (isCellWithName(array[i], name)) {
return array[i];
}
}
return false;
}
function scrollToName(collection, name) {
var found = getCellWithName(collection.cells(), name);
while (found === false) {
collection.dragInsideWithOptions({startOffset:{x:0.2, y:0.99}, endOffset:{x:0.2, y:0},duration:1.0});
found = getCellWithName(collection.cells(), name);
}
return found;
}
धन्यवाद: मुझे लगता है कि चाल करने के लिए लग रहे हैं TuneUp के uiautomation-ext.js के लिए एक विस्तार है, और अधिक लिखा था। बहुत अच्छा काम करता है। – phatmann