在Selenium 2.37中,我可以點擊上下文菜單中的「打開」項目,當我通過兩步搜索時:Selenium 2.37 XPath,在上下文菜單中找到一個項目,然後再次單擊該項目
- 找了幾個WebElement的通過搜索以下XPath:
TD [@class = \ 「dijitReset dijitMenuItemLabel \」 和 「+ 」開頭,以(@id,\「 dijit_MenuItem_ \」)]
- 然後,對於每個WebElement中的s WebElement的列表,我做 String s = we.getText();如果(s.equals(「Open」)== true){...}
這工作正常。
我的問題是,當我做上述的「在一個步驟」,通過包括在XPath搜索文本:
TD [@class = \「dijitReset dijitMenuItemLabel \」和「+ 」開始,與(@id,\「dijit_MenuItem_ \」)和text()= \「Open \」]
在這種情況下,我在上下文菜單中找到「打開」條目,我可以點擊它。到現在爲止還挺好。因此,爲了找到開放條目ONCE,並單擊它,上述兩個方法都可以正常工作。
問題是,當我使用第二種方法,然後下一次我想調出上下文菜單(對於不同的文檔),然後單擊打開菜單項,出現上下文菜單。但鼠標不會向下移動到打開菜單項,所以點擊從不發生。
這是所有在單個WebDriver運行期間,所以結果是我可以打開一個文檔(我看到的第一個文檔),它的上下文菜單出現,鼠標移動到Open上下文菜單項並單擊它。但隨後(運行相同的WebDriver),當我到達第二個文檔時,會發生右鍵單擊,並出現上下文菜單,但鼠標不會向下移動到Open菜單項,因此單擊從不發生。
當然,現在,我正在使用第一種方法。但我真的更喜歡使用第二種方法,因爲如果所有內容(包括text()匹配)都在一個XPath表達式中,我可以在WebDriverWait中查找該元素。
就好像打開菜單項被(從某種程度上)銷燬,從DOM中分離出來的,或者更復雜的XPath被用來找到它的時候。
我只在上下文菜單中出現了這個問題。
任何意見將不勝感激!
你說你可以「選擇打開條目」,但不要點擊它。選擇它意味着什麼?它以某種方式突出顯示? – forgivenson
感謝您的回覆。通過「選擇它」,我的意思是運行的WebDriver代碼選擇了打開菜單項。但現在我又試了一次,那是不正確的。第二次實際發生的是上下文菜單出現。但鼠標不會向下移動(在上下文菜單中)到打開項目。 (這與第一次不同,當上下文菜單出現時,鼠標向下移動到打開項目,然後單擊打開項目。) – user2971144
我剛剛更新了原始問題。感謝forgivenson指出我原來的錯誤。 – user2971144