ইউআই পরীক্ষার ব্যর্থতা - নিরাপদ পাঠ্যফিল্ডে কোনও উপাদান বা কোনও বংশধরকেই কীবোর্ড ফোকাস নেই


139

এটি আমার ক্ষেত্রে:

let passwordSecureTextField = app.secureTextFields["password"]
passwordSecureTextField.tap()
passwordSecureTextField.typeText("wrong_password") //here is an error

ইউআই পরীক্ষার ব্যর্থতা - কোন উপাদান বা কোনও বংশধরকেই কীবোর্ড ফোকাস নেই। এলিমেন্ট:

কি সমস্যা? এটি স্বাভাবিকের জন্য দুর্দান্ত কাজ করছে textFieldsতবে সমস্যাটি কেবল তখনই দেখা দেয় secureTextFields। কোন workaround?



। এবং অদ্ভুত অংশ যদি আমি ভালো চেষ্টা এটা XCUIApplication () webViews.secureTextFields [ "পাসওয়ার্ড"] কাজ করে (XCUIApplication () webViews.secureTextFields [ "পাসওয়ার্ড"] আলতো চাপুন) TYPETEXT (
aurilio

এটি এমন ক্ষেত্রে হতে পারে যে আপনি অ্যাক্সেসিবিলিটি সনাক্তকারীটি সেট করে রেখেছেন তবে আপনি সেটটি করেন নি অ্যাক্সেসিবিলিটি এলিমেন্ট = সত্য
স্মরণ

আমি এখানে অনুরূপ প্রশ্নের উত্তর যুক্ত করেছি: stackoverflow.com/a/59637897/2585413 । আমার সমস্যাটি হল এই যে আমি খারাপ .windowLevel মান অস্তিত্ব অন্যান্য UIWindows ছিল
nteissler

উত্তর:


264

এই সমস্যাটি আমার জন্য এক বেদনা জাগ্রত করেছে, তবে আমি একটি সঠিক সমাধান বের করতে পেরেছি। সিমুলেটারে, 'হার্ডওয়্যার -> কীবোর্ড -> কানেক্ট হার্ডওয়ার কীবোর্ড' বন্ধ রয়েছে তা নিশ্চিত করুন।


4
এটি সমস্যার সমাধান করেছে। তবে এটি খুব খারাপ কাজ নয় কারণ আমরা এটি সিআই-এর জন্য স্বয়ংক্রিয়ভাবে প্রয়োগ করতে পারি না।
স্ট্যানিস্লাভ পাঙ্কেভিচ

25
আপনি যদি সিআই (জেনকিনস ইত্যাদি) এ পরীক্ষা চালান তবে আপনি পরীক্ষা চালানোর আগে কোনও স্ক্রিপ্টে নিম্নলিখিত পরামিতিগুলি সেট করতে পারেন set "ডিফল্ট com.apple.iphonesimulator লিখুন
ConnectHardwareKeyboard

7
এটি আমার জন্য সমস্যার সমাধান করে না। আমি কীবোর্ড আপ সহ টেক্সটফিল্ডটি ফোকাস অর্জন স্পষ্ট দেখতে পাচ্ছি, তবে পরীক্ষার কাঠামোটি পাঠ্য প্রবন্ধ: পদ্ধতিটি ব্যবহার করে পাঠ্য প্রবেশ করতে পারে না
মাইকেল

2
এক্সকোড 11-এ আমার জন্য কাজ করেছেন, তবে সংযোগের হার্ডওয়্যার কীবোর্ডটি যাচাই করা যথেষ্ট নয়। সফ্টওয়্যার কীবোর্ডটি সত্যই প্রদর্শিত হয়েছে কিনা তা নিশ্চিত করার জন্য একটি অতিরিক্তভাবে রয়েছে (টেক্সটফিল্ডটিতে ফোকাস থাকলেও এবং কার্সারটি জ্বলজ্বল করে থাকলেও আমার আসলে এমন পরিস্থিতি ছিল যেখানে কোনও হার্ডওয়্যার কীবোর্ড সংযুক্ত ছিল না এবং কোনও সফ্টওয়্যার কীবোর্ড প্রদর্শিত হয়নি))
রেইনহার্ড মন্নার

1
আমি এক্সকোড 11 এ এটির মধ্যে দৌড়েছি। স্থানীয়ভাবে সংশোধন করা হয়, তবে কীভাবে এটি সিআই-তে সেট করা যায়?
31:39

26

সাম্প্রতিক গৃহীত উত্তর থেকে সমাধানের জন্য আমরা একটি হ্যাক পেয়েছি। সিমুলেটর সেটিংটি অক্ষম করতে: কমান্ড লাইন থেকে 'হার্ডওয়্যার -> কীবোর্ড -> হার্ডওয়্যার কীবোর্ড সংযুক্ত করুন' লিখে দেওয়া উচিত:

defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0

এটি চলমান কোনও সিমুলেটরকে প্রভাবিত করবে না - আপনাকে সেটিংটি কার্যকর করার জন্য সিমুলেটর পুনরায় আরম্ভ করতে হবে বা একটি নতুন শুরু করতে হবে।


এটি কিছু পরিবর্তন হয়নি।
netshark1000

@ নেটসার্ক1000 যা এক্সকোডের নতুন সংস্করণে পরিবর্তিত হতে পারে, আমি এটি যাচাই করব।
অ্যালেক্সডেনিসভ

1
অত্যন্ত সহায়ক, আমার বিপরীতে দরকার ছিল যেখানে কীবোর্ড সর্বদা সক্ষম থাকে, তবে হ্যাঁ এটি দুর্দান্ত ধন্যবাদ। আমি শেষ পর্যন্ত চলেছি defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool true, তবে এটি একই ধারণা।
লেজার হক হক

2
এটি করার জন্য আমি বিল্ড পর্যায়ক্রমে একটি স্ক্রিপ্ট তৈরি করেছি। তবে আমার সমস্ত সিমুলেটরকে হত্যা করা দরকার, তাই আমি এটি করেছি:killall "Simulator"; defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0;
ওয়েগনার বিক্রয়

এটি আর কাজ করবে বলে মনে হচ্ছে না, কী কী পরিবর্তন হয়েছে ?? @ অ্যালেক্সডিনিসভ
সাইমন

15

আমি একটি ছোট এক্সটেনশন (সুইফট) লিখেছি যা আমার পক্ষে নিখুঁত কাজ করে। কোডটি এখানে:

extension XCTestCase {

    func tapElementAndWaitForKeyboardToAppear(element: XCUIElement) {
        let keyboard = XCUIApplication().keyboards.element
        while (true) {
            element.tap()
            if keyboard.exists {
                break;
            }
            NSRunLoop.currentRunLoop().runUntilDate(NSDate(timeIntervalSinceNow: 0.5))
        }
    }
}

মূল ধারণাটি হ'ল কীবোর্ড উপস্থাপনের আগে একটি উপাদান (পাঠ্য ক্ষেত্র) আলতো চাপানো।


এটি এখনই আমার পক্ষে কাজ করছে না। আমি এক্সকোড 7.2 (7 সি 68) করছি, আপনার কি সংস্করণ আছে? আমরা সিআইয়ের জন্য পাওয়া এই সমাধানটি আমাদের জন্য কাজ করে: stackoverflow.com/a/34812979/598057
স্ট্যানিস্লাভ পাঙ্কেভিচ

এটি আরও একবার নিশ্চিত করতে: এই সহায়িকাটি কেবল নিয়মিত পাঠ্য ক্ষেত্র নয়, নিরাপদ পাসওয়ার্ড পাঠ্যের ক্ষেত্রে আপনার জন্য কাজ করে ?
স্টানিস্লাভ পাঙ্কেভিচ

হ্যাঁ, এটি উভয় প্রকারের পাঠ্য ক্ষেত্রের জন্য কাজ করে: নিয়মিত এবং সুরক্ষিত।
berezhnyi oleksandr

1
এই উত্তরের সাথে সমস্যা হ'ল এটি একটি হার্ডকডযুক্ত দেরি ব্যবহার করে। পরিবর্তে, কীবোর্ড উপাদান সহ প্রত্যাশার মডেলটির জন্য অপেক্ষা করুন।
ব্যবহারকারী1122069

11

স্ট্যানিসলাভের সঠিক ধারণা রয়েছে।

দলের পরিবেশে আপনার এমন কিছু দরকার যা স্বয়ংক্রিয়ভাবে কাজ করবে। আমি এখানে একটি ঠিক সঙ্গে এসেছি আমার ব্লগে ।

মূলত আপনি কেবল পেস্ট করুন:

UIPasteboard.generalPasteboard().string = "Their password"
let passwordSecureTextField = app.secureTextFields["password"]
passwordSecureTextField.pressForDuration(1.1)
app.menuItems["Paste"].tap()

আপনার সমাধান ভাগ করে নেওয়ার জন্য ধন্যবাদ। দুর্ভাগ্যক্রমে এটি এখনই আমার পক্ষে কাজ করছে না। আমার এক্সকোড 7.2 (7 সি 68) হচ্ছে, আপনি কী? অন্যান্য সমাধান দেখুন যা আমরা সিআই-র জন্য পেয়েছি: stackoverflow.com/questions/32184837/…
স্ট্যানিস্লাভ পাঙ্কেভিচ

8

এই ত্রুটির অন্য কারণ হ'ল যদি এমন পাঠ্য ক্ষেত্রের পিতামাতার দৃষ্টিভঙ্গি থাকে যেখানে আপনি অ্যাক্সেসিবিলিটি উপাদান ( view.isAccessibilityElement = true) হিসাবে সেট করা পাঠ্যটি প্রবেশ করার চেষ্টা করছেন । এই ক্ষেত্রে, এক্সসিটিস্ট পাঠ্য প্রবেশ করানোর জন্য সাবউভিউতে একটি হ্যান্ডেল পেতে সক্ষম হয় না এবং ত্রুটি ফিরে দেয়।

ইউআই পরীক্ষার ব্যর্থতা - উপাদান বা কোনও বংশধর উভয়েরই কিবোর্ড ফোকাস নেই।

এটি এমন নয় যে কোনও উপাদানটির ফোকাস নেই (আপনি প্রায়শই ইউআইটিেক্সটফিল্ডে কীবোর্ড আপ এবং ঝলকানো কার্সার দেখতে পারেন), এটি কেবল যে কোনও উপাদান পৌঁছাতে পারে তা ফোকাস করে না। কোনও ইউআইএসবারবারে পাঠ্য প্রবেশের চেষ্টা করার সময় আমি এতে দৌড়েছি। অ্যাক্সেসিবিলিটি উপাদান হিসাবে সেট করার সময় অনুসন্ধান বারটি নিজেই পাঠ্য ক্ষেত্র নয়, অন্তর্নিহিত ইউআইটিেক্সটফিল্ডে অ্যাক্সেস অবরুদ্ধ ছিল। এটি সমাধান করার জন্য, searchBar.accessibilityIdentifier = "My Identifier"সেট করা ছিল UISearchBarতবে isAccessibilityElementসেট করা হয়নি true। এর পরে, ফর্মের পরীক্ষার কোড:

app.otherElements["My Identifier"].tap()
app.otherElements["My Identifier"].typeText("sample text")

ওয়ার্কস


6

এটি আমার সাথে বহুবার ঘটেছিল। আপনার সিমুলেটারে আপনাকে কীবোর্ড হার্ডওয়্যার এবং একই লেআউটটিকে ওএসএক্স হিসাবে অক্ষম করতে হবে

হার্ডওয়্যার / কীবোর্ড (সমস্ত অক্ষম করুন)

এর পরে কীবোর্ড সফ্টওয়্যার খারিজ করবে না এবং আপনার পরীক্ষাগুলি পাঠ্য টাইপ করতে পারে

হার্ডওয়্যার অক্ষম করুন


5

অ্যাপ্লিকেশন চালু করতে এবং পাঠ্যক্ষেত্রগুলিতে ডেটা টাইপ করার মধ্যে একটি ঘুম ব্যবহার করুন:

sleep(2)

আমার ক্ষেত্রে আমি প্রতিবারই এই ত্রুটিটি পেয়ে যাচ্ছিলাম এবং কেবলমাত্র এই সমাধানটি আমার সাহায্য করেছিল।


1
সমস্যাটি হ'ল যদি আপনার প্রচুর পরিমাণে ইউআই টেস্ট থাকে যা প্রাথমিক লগইনের মতো কিছু করে তবে এটি আপনার সিআই পরীক্ষার দৌড়ে একটি বিশাল ওভারহেড যুক্ত করবে।
ডেল্টাফ্লাট

4

এটি সম্ভবত সহায়তা করে: আমি ত্রুটির আগে কেবল একটি "ট্যাপ" ক্রিয়া যুক্ত করি; এখানেই শেষ :)

[app.textFields[@"theTitle"] tap];
[app.textFields[@"theTitle"] typeText:@"kk"];

2
এটি অবশ্যই নিরাপদ পাসওয়ার্ড পাঠ্যের ক্ষেত্রে কাজ করে না।
স্টানিস্লাভ পাঙ্কেভিচ 15'14

এটি আমার সুরক্ষিত পাসওয়ার্ড পাঠ্য ক্ষেত্রের জন্য ঠিক কাজ করেছে। ভাল সমাধান।
ট্র্যাভিস এম।

4
func pasteTextFieldText(app:XCUIApplication, element:XCUIElement, value:String, clearText:Bool) {
    // Get the password into the pasteboard buffer
    UIPasteboard.generalPasteboard().string = value

    // Bring up the popup menu on the password field
    element.tap()

    if clearText {
        element.buttons["Clear text"].tap()
    }

    element.doubleTap()

    // Tap the Paste button to input the password
    app.menuItems["Paste"].tap()
}

4

আপনি চাইলে রেকর্ড কেস, কীবোর্ড বা কীবোর্ড সংযুক্ত না করে। তবে টেস্ট খেলার আগে নিম্নলিখিতটি করুন।

পরীক্ষার সময় এই নিম্নলিখিত বিকল্পটি (সংযুক্ত হার্ডওয়্যার কীবোর্ড) চেক করা উচিত নয়।

এখানে চিত্র বর্ণনা লিখুন


4

আমার ক্ষেত্রে এটি Hardware -> Keyboard -> Connect Hardware Keyboard-> অক্ষম করুন আমার পক্ষে কাজ করেনি।

কিন্তু আমি যখন অনুসরণ করেছি

1) Hardware -> Keyboard -> Connect Hardware Keyboard-> অ্যাপ্লিকেশন সক্ষম করুন এবং চালান
2) Hardware -> Keyboard -> Connect Hardware Keyboard-> অক্ষম করুন

এটা আমার জন্য কাজ করেছে


আমার জন্য কাজ করেছেন, আমি এক্সকোডের এই দিকটিকে ঘৃণা করতে পারি!
বিউববোনস

3

[বার্তোমিয়েজ সেমাসেকিকে পুনরায় পোস্ট করা মন্তব্যটিকে উত্তর হিসাবে পুনরায় পোস্ট করা কারণ এটি আমার জন্য সমস্যার সমাধান করেছে]

আমার পক্ষে এই কাজটি শুরু করার জন্য সিমুলেটর> সিমুলেটর মেনু বারে সামগ্রী এবং সেটিংস পুনরায় সেট করা দরকার।


সিমুলেটরটি পুনরায় সেট করা আমাকেও সহায়তা করেছিল। মজার বিষয় হল সমস্যাটি কেবলমাত্র সিমুলেটারেই ঘটেছিল যখন একই পরীক্ষা (টেক্সটফিল্ডের পরে অক্ষরগুলি টাইপ করে) কোনও ডিভাইসে সূক্ষ্মভাবে চলে।
খ্রিস্টান

1

কিছু সময় পাঠ্য ক্ষেত্রগুলি পাঠ্য ক্ষেত্র হিসাবে প্রয়োগ করা হয় না বা তারা অন্য UI উপাদানগুলিতে আবৃত থাকে এবং সহজে অ্যাক্সেসযোগ্য হয় না। এখানে একটি কাজ প্রায়:

//XCUIApplication().scrollViews.otherElements.staticTexts["Email"] the locator for the element
RegistrationScreenStep1of2.emailTextField.tap()
let keys = app.keys
 keys["p"].tap() //type the keys that you need
 
 //If you stored your data somewhere and need to access that string //you can cats your string to an array and then pass the index //number to key[]
 
 let newUserEmail = Array(newPatient.email())
 let password = Array(newPatient.password)
 
 //When you cast your string to an array the elements of the array //are Character so you would need to cast them into string otherwise //Xcode will compain. 
 
 let keys = app.keys
     keys[String(newUserEmail[0])].tap()
     keys[String(newUserEmail[1])].tap()
     keys[String(newUserEmail[2])].tap()
     keys[String(newUserEmail[3])].tap()
     keys[String(newUserEmail[4])].tap()
     keys[String(newUserEmail[5])].tap()       


0

আপনার প্রথম লাইনটি কেবল একটি ক্যোয়ারী সংজ্ঞা , যার অর্থ এই নয় যে passwordSecureTextFieldআসলে উপস্থিত থাকবে।

আপনার দ্বিতীয় লাইনটি গতিশীলভাবে ক্যোয়ারিকে সম্পাদন করবে এবং কোয়েরিকে ইউআই উপাদানটিতে আবদ্ধ করার চেষ্টা করবে (পুনরায়)। আপনার এটিতে একটি ব্রেকপয়েন্ট স্থাপন করা উচিত এবং এটি পরীক্ষা করা উচিত যে একটি এবং শুধুমাত্র একটি উপাদান পাওয়া গেছে। বা কেবল একটি দৃ as় ব্যবহার করুন:

XCTAssertFalse(passwordSecureTextField.exists);

অন্যথায় এটি ঠিক দেখাচ্ছে, tapকীবোর্ড দৃশ্যমান typeTextহওয়া উচিত এবং তারপরে কেবল কাজ করা উচিত। ত্রুটি লগ আপনাকে আরও তথ্য জানাতে হবে।


1
passwordSecureTextFieldবিদ্যমান। আমি সমস্যাটি স্থির করেছি, তবে মেমরি পরিষ্কার করছি এবং আবার সেই লাইনগুলি আবার লিখি। অদ্ভুত, কিন্তু এটি কাজ করে।
বার্তোমিয়েজ সেমাসেকিক

এটা ঠিক শুনে ভাল! আমি গতকাল বিটা 6 এর সাথে একই ধরণের সমস্যায়
পড়েছি

বিটা 6? :-) সত্যি? আমার কাছে কেবল 5 :) আছে
বার্তোমিয়েজ সেমাসেকেক

আপনি কোডিংয়ে ব্যস্ত রয়েছেন :) বিটা 6 tapআমার জন্য রেকর্ড করেনি , এটি বের করতে কিছুটা সময় নিয়েছিল। ভাল ডিবাগ অনুশীলন!
জেএম

সম্ভবত আপনি এর উত্তরটি জানেন: স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / 32219015/… ?
বার্তোমিয়েজ সেমাসেকেক

0

বিশৃঙ্খলা করবেন না, কারণ সমস্যাটি ধরা পড়েছে যে আপনি যখন আপনার অ্যাপ্লিকেশনটি হার্ডওয়্যার কীবোর্ড সংযুক্ত করবেন তখন আপনার পরীক্ষার সময়টি রেকর্ড করা হয় যখন আপনার স্বয়ংক্রিয় পরীক্ষার সময় সিমুলেটার কেবলমাত্র সফ্টওয়্যার কীবোর্ড নেয়। সুতরাং এই সমস্যাগুলি ঠিক করার জন্য। আপনার রেকর্ডিংয়ের সময় কেবল সফ্টওয়্যার কীবোর্ড ব্যবহার করুন। আপনি যাদু দেখতে পারেন।


0

আমার জন্য সমস্যাটি টেডের মতোই ছিল। প্রকৃতপক্ষে যদি লগইন ফিল্ড এবং হার্ডওয়্যার কেবি চালু হওয়ার পরে পাসওয়ার্ড ক্ষেত্রটি ট্যাপ হয়ে যায় তবে সফ্টওয়্যার কীবোর্ডটি দ্বিতীয় ক্ষেত্রের ট্যাপে নিজেকে খারিজ করে দেবে, এবং এটি ইউআই পরীক্ষার জন্য নির্দিষ্ট নয়।

কিছু সময় অ্যাপলস্ক্রিপ্টের সাথে গোলযোগের পরে, আমি এখানে যা এলাম তা এখানে দেওয়া হয়েছে (উন্নতিগুলি স্বাগত জানানো হয়েছে):

tell application "Simulator" activate tell application "System Events" try tell process "Simulator" tell menu bar 1 tell menu bar item "Hardware" tell menu "Hardware" tell menu item "Keyboard" tell menu "Keyboard" set menuItem to menu item "Connect Hardware Keyboard" tell menu item "Connect Hardware Keyboard" set checkboxStatus to value of attribute "AXMenuItemMarkChar" of menuItem if checkboxStatus is equal to "✓" then click end if end tell end tell end tell end tell end tell end tell end tell on error tell application "System Preferences" activate set securityPane to pane id "com.apple.preference.security" tell securityPane to reveal anchor "Privacy_Accessibility" display dialog "Xcode needs Universal access to disable hardware keyboard during tests(otherwise tests may fail because of focus issues)" end tell end try end tell end tell

উপরের কোড সহ একটি স্ক্রিপ্ট ফাইল তৈরি করুন এবং এটি প্রয়োজনীয় লক্ষ্যগুলিতে যুক্ত করুন (সম্ভবত ইউআই পরীক্ষাগুলি লক্ষ্যমাত্রা, আপনি বিকাশের সময় এইচডাব্লু কীবোর্ডকে পুনরায় সক্ষম করতে আপনার বিকাশের লক্ষ্যগুলিতে অনুরূপ স্ক্রিপ্ট যুক্ত করতে চাইতে পারেন)। আপনার Run Scriptবিল্ড পর্যায়গুলিতে পর্যায় যুক্ত করা উচিত এবং এটি এর মতো ব্যবহার করুন: osascript Path/To/Script/script_name.applescript


0

accessibilityIdentifierকাস্টম ভিউ ( UIStackViewসাবক্লাস) সমন্বিত জন্য মান সেট করার সময় আমরা একই ত্রুটির মুখোমুখি হয়েছিUIControl ভিউযুক্ত । সেক্ষেত্রে এক্সসিস্টেস্ট বংশধর উপাদানগুলির জন্য কীবোর্ড ফোকাস পেতে অক্ষম।

আমাদের সমাধানটি হ'ল accessibilityIdentifierআমাদের পিতামাতার দর্শন থেকে সরানো এবং accessibilityIdentifierউত্সর্গীকৃত বৈশিষ্ট্যগুলির মাধ্যমে সংক্ষিপ্তসারগুলির জন্য সেট করা।


0

আর একটি উত্তর, তবে আমাদের জন্য সমস্যাটি ছিল ভিউটি অন্য দৃষ্টিভঙ্গির খুব কাছাকাছি ছিল যা এটিতে কোনও অঙ্গভঙ্গি সনাক্তকারী। আমরা আমাদের দেখতে পেলাম যে আমাদের অন্তত 20 পিক্সেল দূরে থাকতে হবে (আমাদের নীচের ক্ষেত্রে) view আক্ষরিক 15 কাজ করে না এবং 20 বা আরও বেশি কাজ করে। এটি আশ্চর্যজনক যে আমি স্বীকার করব, তবে আমাদের কিছু ইউআইটিেক্সটভিউ ছিল যা কাজ করছিল এবং কিছু ছিল না এবং সব একই পিতা-মাতার অধীনে এবং একইরকম অন্যান্য অবস্থানের (এবং অবশ্যই পরিবর্তনশীল নাম) ছিল। কীবোর্ড চালু বা বন্ধ বা যাই হোক না কেন কোনও পার্থক্য নেই। অ্যাক্সেসযোগ্যতা ক্ষেত্রগুলি দেখিয়েছে। আমরা আমাদের কম্পিউটারগুলি পুনরায় চালু করেছি। আমরা পরিষ্কার বিল্ডগুলি করেছি। তাজা উত্স চেকআউট।



0

আমি এই ইস্যুতে দৌড়েছি এবং @ অ্যালেক্সডেনিসভ পোস্ট করা সমাধানটি গ্রহণ করে এবং এটি আমার রান এবং পরীক্ষার জন্য পূর্ব-কার্যগুলিতে যুক্ত করে আমার পরিস্থিতিতে এটি সমাধান করতে সক্ষম হয়েছি ।

এখানে চিত্র বর্ণনা লিখুন


0

আই / ও-তে কীবোর্ড চালু / বন্ধ করার দরকার নেই। নিরাপদ পাঠ্যফিল্ডের জন্য .typeText ব্যবহার করবেন না, কেবল ব্যবহার করুন

app.keys["p"].tap()
app.keys["a"].tap()
app.keys["s"].tap()
app.keys["s"].tap()

বোনাস: আপনি কীবোর্ড শব্দ ক্লিক করুন :)


0

অবশেষে, আমি একটি স্ক্রিপ্ট লিখেছিলাম যা সিমুলেটারের .plist ফাইল সম্পাদনা করে এবং সেট করে ConnectHardwareKeyboard নির্বাচিত সিমুলেটারের জন্য সম্পত্তিটিকে মিথ্যাতে । আপনি এটি ঠিক শুনেছেন, এটি বিশ্বব্যাপী সম্পত্তি সম্পাদনা করার পরিবর্তে "ডিভাইসপ্রাইফারেন্স" অভিধানের ভিতরে নির্দিষ্টভাবে নির্বাচিত সিমুলেটারের সম্পত্তি পরিবর্তন করে।

প্রথমে নীচের বিষয়বস্তুগুলির সাথে অক্ষম -শারওয়্যার-কিবোর্ড.শ নামের একটি শেল স্ক্রিপ্ট তৈরি করুন । আপনি এটিকে "আপনারপ্রজেক্ট / এক্সজিউইআইটিএস / স্ক্রিপ্টস /" এর মধ্যে রাখতে পারেন:

echo "Script: Set ConnectHardwareKeyboard to false for given Simulator UDID"

if [[ $1 != *-*-*-*-* ]]; then
    echo "Pass device udid as first argument."
    exit 1
else
    DEVICE_ID=$1
fi

DEVICE_PREFERENCES_VALUE='<dict><key>ConnectHardwareKeyboard</key><false/></dict>'
killall Simulator # kill restart the simulator to make the plist changes picked up
defaults write com.apple.iphonesimulator DevicePreferences -dict-add $DEVICE_ID $DEVICE_PREFERENCES_VALUE
open -a Simulator # IMPORTANT

আর্গুমেন্ট হিসাবে নির্বাচিত সিমুলেটারের ইউডিডটি পাস করার সাথে এটি কল করার জন্য এখন এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার এক্সকোড স্কিমটি সম্পাদনা করুন (বা আপনার যদি ইউআই নির্দিষ্ট পরীক্ষা করে থাকে তবে)
  2. এতে যান: পরীক্ষা> প্রাক-ক্রিয়া
  3. "+" চিহ্ন> "নতুন রান স্ক্রিপ্ট অ্যাকশন" আলতো চাপ দিয়ে নতুন স্ক্রিপ্ট যুক্ত করুন।
  4. গুরুত্বপূর্ণ: "ড্রপডাউন থেকে বিল্ড সেটিংস সরবরাহ করুন" এর ভিতরে আপনার প্রধান অ্যাপ্লিকেশন লক্ষ্যটি চয়ন করুন, ইউআই পরীক্ষার লক্ষ্য নয়।
  5. এখন নীচের পাঠ্য অঞ্চলে নিম্নলিখিত স্ক্রিপ্ট যুক্ত করুন।

পরীক্ষার ভিতরে স্ক্রিপ্ট> প্রাক-ক্রিয়া:

#!/bin/sh
# $PROJECT_DIR is path to your source project. This is provided when we select "Provide build settings from" to "AppTarget"
# $TARGET_DEVICE_IDENTIFIER is the UDID of the selected simulator
sh $PROJECT_DIR/xyzUITests/Scripts/disable-hardware-keyboard.sh $TARGET_DEVICE_IDENTIFIER

# In order to see output of above script, append following with it:
#  | tee ~/Desktop/ui-test-scheme-prescript.txt

এটি পরীক্ষা করার সময়:

  1. সিমুলেটর চালু করুন
  2. এটির জন্য হার্ডওয়্যার কীবোর্ড সক্ষম করুন
  3. কীবোর্ড ইন্টারঅ্যাকশন সহ যে কোনও ইউআই পরীক্ষা চালান। সিমুলেটর পুনরায় আরম্ভ এবং হার্ডওয়্যার কীবোর্ড অক্ষম করা আছে পর্যবেক্ষণ । এবং পরীক্ষার কীবোর্ড ইন্টারঅ্যাকশন ঠিকঠাক কাজ করছে। :)

-1

সিকিওরেক্সটফিল্ডস নিয়ে একই সমস্যা ছিল। আমার সিমুলেটারে সংযুক্ত হার্ডওয়্যার বিকল্পটি ছিল, তবে এখনও এটি ইস্যুতে চলেছে। অবশেষে, এটি আমার পক্ষে কাজ করেছে (সুইফট 3):

 let enterPasswordSecureTextField = app.secureTextFields["Enter Password"]
    enterPasswordSecureTextField.tap()
    enterPasswordSecureTextField.typeText("12345678")

আপনার কোড এবং প্রশ্নে জিজ্ঞাসিত কোডের মধ্যে পার্থক্য কী।
শিবাম পোখরিয়াল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.