2017-10-17 6 views
1

dans l'interface utilisateur de test sur Xcode 9.0 (9A235), en interaction avec UISlider avec adjust(toNormalizedSliderPosition:) ne fonctionne pas du tout quand UISlider est niché dans un UITableViewCell.UI Test: Le curseur ne parvient pas à régler est imbriqué dans le tableau Afficher la cellule

Je l'ai testé dans de nombreux scénarios: - Normal UISlider est pas incorporé dans une amende de travail UITableView avec la méthode adjust. - UISlider qui coexiste avec un UITableView mais pas à l'intérieur d'une cellule de vue de table continue à fonctionner avec adjust - UISlider dans un UITableView peut être identifié de manière unique. - UISlider identifié dans un UITableView peut répondre à l'événement simple comme tap() - UISlider identifié dans un UITableView ne fonctionne pas avec adjust méthode du tout, même quand je modifie le nombre de lignes à 1. Le message d'erreur est:

échec aller chercher les attributs de l'élément pid: 24415, elementOrHash.elementID: 106102876671744.43: erreur Domain = code XCTDaemonErrorDomain = 13 "valeur pour l'attribut 5011 Obtention de l' a renvoyé l'erreur AX -25205." UserInfo = {NSLocalizedDescription = Comparaison valeur pour l'attribut 5011 a renvoyé l'erreur AX -25205.}

Discussions similaires J'ai trouvé en ligne: https://forums.developer.apple.com/thread/77445

J'ai téléchargé my code online aussi si quelqu'un est intéressé à regarder. J'ai déjà soumis un bug report à Apple à ce sujet. Ce que je demande est, quelqu'un sait-il d'une solution de contournement possible que je peux utiliser pour ajuster les valeurs UISlider lorsque le curseur est imbriqué dans un UITableViewCell? Merci!

Répondre

2

Vous pouvez l'utiliser comme une solution de contournement:

func testSliderAdjustsInTableView() { 
    let app = XCUIApplication() 

    app.staticTexts["Slider in Table View UI Test"].tap() 

    let cell = app.tables.element.cells["cell 0"] 
    let button = cell.buttons["Test Button"] 
    button.tap() 

    let slider = cell.sliders["value slider"] 
    XCTAssert(slider.exists) 

    let fiftyPercent = slider.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5)) 
    let ninetyPercent = slider.coordinate(withNormalizedOffset: CGVector(dx: 0.9, dy: 0.5)) 

    fiftyPercent.press(forDuration: 0.1, thenDragTo: ninetyPercent) 

    XCTAssertEqual(slider.value as! String, "90 %") 
} 
+0

J'ai essayé de généraliser ce un peu en remplaçant 'dx: 0.5' avec' normalizedSliderPosition' mais ai eu la même erreur aussi, mais cela est une solution acceptable . Merci! – HuaTham

+1

Ok. Je me suis retrouvé avec quelque chose comme '(slider1.value as! NSString) .floatValue/100.0' afin de généraliser à partir de' 0.5'. – HuaTham