您提供關於你的問題還真沒有幾個信息,所以我給一般的答案一般問題:
前提 - 你必須定位 //div[@class='navbar-collapse collapse']//li[@ng-class='{active:contactActive}']//span[contains(text(),'Contact Manager')]
- 可能發行1讓我們假設定位器正確 - 所以有可能的情況是,驅動程序在出現之前檢查元素
解決方案:
a。在驅動程序爲 正在搜索時確保在調試模式下該元素在步驟中可見 - 項目未摺疊,未重疊,可見,存在 。
b。當驅動程序實際上在爲其搜索 時,請確保該元素已加載。添加明確的等待。
- 問題2
//div[@class='navbar-collapse collapse']
- 例如定位器總是的問題源,因爲你的div應具有類正好等於navbar-collapse collapse
,以相同的順序。如果添加了另一個類,定位器將失敗,否則類將以另一種方式定購。
解決方案 - 這是更好地使用 '包含' 定位器,而不是 '等於' //div[contains(@class,'navbar-collapse')]
- 第3 - 此定位告訴你沒有太多關於你正在尋找的元素。它只是說元素應該位於可摺疊div內。與您的定位器的li部分相同的問題。
解決方案:
一個。嘗試使用更多信息豐富的定位器(類/ ids),因爲它將更容易維護(瞭解定位器正在查找的內容以及更新爲正確的一個),而不是抽象「摺疊」,但是「userItem」(例如 ) )使用的類。
b。降低複雜性 - 刪除不需要的部分定位器。你真的需要 那部分定位器//div[@class='navbar-collapse collapse']
? 如果你移除了這部分,定位器是否會邏輯/正確地工作?我相信如此)。「合同經理」對span
而不是div
是否重要?如果不是,則使用*
作爲標記指示。等等。
您需要明確地等待元素出現 – sircapsalot