たとえば、button
の行内からtable
要素をランダムに選択しています。button
が見つかったら、選択したボタンを含むtable
の行を取得します。
ここに私のコードスニペットがあります:
browser.findElements(by.css('[ng-click*=submit]')).then(function (results) {
var randomNum = Math.floor(Math.random() * results.length);
var row = results[randomNum];
// ^ Here I want to get the parent of my random button
});
Xpathを使用することにしました。
var row = results[randomNum].findElement(by.xpath('ancestor::tr'));
最新の分度器(この記事の執筆時点で1.6.1)の時点で、構文が少し変更されました:
_var row = results[randomNum].element(by.xpath('..'));
_
(element()
の代わりにfindElement()
を使用します)。
使用できるようになりました
var element = element(by.css('.foo')).getWebElement() var parentElement = element.getDriver() // gets the parent element
親要素を取得します。詳細については、 http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.getDriver を参照してください。
実際、現時点では、xpath
を使用せずに要素の親を選択する簡単な方法があります。 ElementFinder
から、parentElementArrayFinder
を介して親要素にアクセスし、たとえばclick
メソッドを直接トリガーできます。
myElement.parentElementArrayFinder.click();