![](/img/trans.png)
[英]c# Selenium WebDriver. Firefox browser blocks popup windows
[英]Selenium webdriver. Reading an earlier line
嘗試使用selenium webdriver和C#為我們的項目自動化一些測試,結果出現以下情況:當我嘗試測試主菜單時,流程如下所示:
現在我的問題是,在加載頁面並且測試必須斷言標題文本(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.