如果沒有更多信息(如配置文件),很難回答,因爲可能有幾個原因。根據我的經驗:不,沒有找到元素的特定方式(標準的Protractor/webDriver方式 - by.ID,by.CSS,by.model等)。更多的信息在這裏:https://github.com/angular/protractor/blob/master/docs/locators.md
(1)顯而易見 - 該元素似乎並不存在於測試執行時(無論是因爲iPad/safari響應,xpath不正確,還是測試可能在應用程序已完全加載)
(2)確保global.browser.ignoreSynchronization = true;
位於配置文件的onPrepare
塊中(除非應用程序是Angular)。
(3)一般來說,我儘量避免使用xpath。可能有更強大的定位該元素的方法。 ID將永遠是最強的,因爲它們是獨一無二的,接下來我會建議CSS鏈接,比如var myElement = element(by.css('.parent')).element(by.css('.child')).
雖然CSS鏈接與xpath非常相似,但它給了一些自由,並且允許您跳轉到定位符而不是顯式聲明單個路徑像xpath這樣的元素的確如此。
一些我喜歡的方式來定位元素:
var el = element(by.id('elementID'));
var el2 = element(by.css('.elementClass'))
var el3 = element(by.cssContainingText('div', 'Log In'));
// returns a div element containing the string 'Log In'
var el4 = element.all(by.css('span.someClass')).first();
// .all returns an array of the specific elements, .first() grabs
// the first from that list, also .last() and others available
本文也可能會有所幫助:https://blog.mozilla.org/webqa/2013/09/26/writing-reliable-locators-for-selenium-and-webdriver-tests/
只是爲了幫助你,你可以在這裏發佈這個問題,以及:https://開頭討論.appium.io/ – nullpointer
謝謝,但我沒有,也沒有更積極的答案解決我的問題:https://discuss.appium.io/t/element-could-not-be-located-in-protractor-scripts- using-appium/9677/13 – Emna