3
受測試的應用程序會生成一個IFrame以實現功能。我能夠通過使用以下任何定位策略(XPATH,CSS或LinkText)在IFrame上完美地定位元素。但是,當我執行Click()
時,代碼點擊不同的位置。例如,屏幕有4個答案的多項選擇問題,腳本應該點擊第3個選項,但最終點擊第1個選項。如果一個按鈕無法點擊按鈕,問題會更加嚴重。儘管如此,Click()
事件不會引發任何錯誤。我嘗試使用Action()
界面,但沒有運氣。 Action.Perform()
引發屏幕元素超出HTML的錯誤。任何人都可以幫忙嗎?Selenium WebDriver - 能夠在IFrame中查找對象,但Click()不準確
我使用Selenium WebDriver(.NET)版本2.31和Firefox 19.0.2與.NET框架4.0。
driver.SwitchTo().Frame(2);
System.Threading.Thread.Sleep(20000);
IWebElement Answer1 = driver.FindElement(By.XPath(".//*[@id='question-reload']/div[3]/div[2]/ul/li[1]/a"));
Answer1.Click();
driver.FindElement(By.LinkText("Find the embassy")).Click();
IWebElement Next = driver.FindElement(By.XPath(".//*[@id='next']/b/i"));
int X = Next.Location.X;
int Y = Next.Location.Y;
Next.Click();
for (int i = 0; i < 59; i++)
{
System.Threading.Thread.Sleep(3000);
IWebElement newNext = driver.FindElement(By.XPath(".//*[@id='next']/b/i"));
newNext.Click();
}
你確定元素id,xpath或css沒有動態變化嗎?你可以檢查一次,讓我們知道嗎? – Hemanth 2013-03-12 03:06:34
@HemChe:元素沒有ID。但其他定位器值不會動態改變。 – 2013-03-12 03:33:05
只是一個更新。在Debug模式下執行時,腳本能夠點擊Next按鈕。但完全執行時會失敗。嘗試在Click()事件之前創建智能等待元素,但沒有運氣。 – 2013-03-12 09:34:31