私はこのテストを午後のほとんどのところで戦ってきました。私は何をしようとしたのかコメントしましたが、うまくいかないでしょう。会社内のユーザーを検索する機能があり、テーブルが生成され、ユーザーの名前と一致するものを選択したいと考えています。現在、私はtd.text-centerをテーブル内の唯一のtdとして使用していますが、同じ名前の他のユーザーがシステムに存在する場合、これは実際には貧弱で、破損しやすいようです。分度器テストは非常に遅く、しばしばタイムアウトします
試行2は最善の解決策であると思われますが、常に要素が見つからないというエラーが表示されます。テーブル内でTDを見つける信頼できる方法を見つけた人はいますか?この方法は、以下だけではない、この1 ....
this.editUser = function(name) {
// Original Code Block
//browser.actions().mouseMove(element(by.css('td.text-center'))).perform();
//var editUserBtn = element(by.css('.user-action-open'));
//editUserBtn.click().then(function() {
// var editDetails = element(by.cssContainingText('li > a', 'Edit Details'));
// browser.wait(EC.visibilityOf(editDetails), 3000);
// editDetails.click();
//});
// Attempt 2
// browser.actions().mouseMove(element(by.css('td.text-center'))).perform();
//browser.sleep(3000);
//var edit = element.all(by.repeater('user in users')).filter(function(rowElement){
// return rowElement.element.all(by.css('td[ng-bind="user.Firstname"]')).getText().then(function(text){
// return text.trim() == name;
// });
//}).first();
//browser.actions().mouseMove(edit).perform();
// Currently just times out and doesn't find the element.
var editUserButton = $('.user-action-open');
browser.wait(EC.visibilityOf(editUserButton), 20000).then(function() {
editUserButton.click().then(function() {
var editDetails = element(by.cssContainingText('li > a', 'Edit Details'));
browser.wait(EC.visibilityOf(editDetails), 3000);
editDetails.click();
});
});
}
の連鎖、私は私がやろうとした主なものは、行をホバーするbrowser.actions.mouseMoveを削除し、ループフィルタと交換だったと思いますどのような理由であれ、私はそれをするように見えませんので、このメソッドを試してみてください – theHussle
オブジェクトをクリックしようとしている場合は、そのオブジェクトがクリック可能であることを確認してください。任意のタイムアウトは理想的ではありません。また、なぜマウスが動いたのかわからなかった。私は '' td.text-center ''の上にホバリングした後に登場するメニューと関係があると判断しました。行方不明の別のものは、クリックする予定のクリックアクションです。 – cnishina
ええ、それは理想的なデザインではなく、一緒に作業する必要があります。基本的には、テーブルを生成すると、その特定の行を編集するためのボタンが表示されます。そのため、行を表示するためのハックコードが表示されますが、この設定は検索に依存しているため単一のtd行更新された答えは – theHussle