簡體   English   中英

Selenium Webdriver。 閱讀更早的文章

[英]Selenium webdriver. Reading an earlier line

嘗試使用selenium webdriver和C#為我們的項目自動化一些測試,結果出現以下情況:當我嘗試測試主菜單時,流程如下所示:

  1. 單擊第一個菜單項(位於頁面頂部)
  2. 等待頁面中的最后一個元素加載,這樣我就可以確保內容已完全加載(有時需要15-20秒才能加載整個頁面)
  3. 聲明位於主菜單下的div中的標題文本
  4. 單擊下一個菜單項,然后繼續類似的流程

現在我的問題是,在加載頁面並且測試必須斷言標題文本(3)之后,我崩潰了。 我知道發生這種情況是因為C#僅讀取一次內容,並且一旦讀取它就無法返回上一個元素。 因此,我認為可以解決的問題是,首先在變量中定義body標簽,然后調用它進行斷言和進一步的導航:

var body = driver.FindElement(By.TagName("body")); 

driver.FindElement(By.XPath("/html/body/div[1]/div/div[2]/div[2]/div[2]")).Click();    // click on the first item in the main menu
driver.WaitForElement(By.XPath("/html/path_to_the_last/div[1]"));    // waiting for the last element on the page
Assert.AreEqual("Title text", body.FindElement(By.XPath("/html/body/div[1]/div/div[3]/div[3]/div[1]/div/div[1]/div[1]/div[1]/div[1]/div")).Text.Trim());     // assert the title text by calling the initially set variable

body.FindElement(By.XPath("/html/body/div[1]/div/div[2]/div[2]/div[3]")).Click();   // click on the next item in the main menu.
// similar flow to follow until each menu was checked

問題是,當網絡驅動程序將要執行assert時-首次調用該變量時,它將崩潰並顯示以下錯誤:

OpenQA.Selenium.StaleElementReferenceException:在緩存中找不到元素-自查找頁面以來,頁面可能已更改

任何想法我做錯了什么,我應該怎么做?

我的猜測是,當從身體元素中查找項目時,您的路徑就不能從根本開始。 因此,在斷言中,您應該具有以下內容:

body.FindElement(By.XPath("./div[1]/div/div[3]/div[3]/div[1]/div/div[1]/div[1]/div[1]/div[1]/div")

起始點表示您的身體要素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM