確定要爲我們的Web應用程序編寫testmonkey。這隻猴子應該在log
中隨機開始輸入數值並點擊webelements
。從Se中的元素中找到一個定位器
到目前爲止,我已經能夠登錄,找到webelements
(篩選它們),然後隨機選擇一個並單擊它。儘管我點擊了一次隨機數,但我碰到了StaleElementReferenceException
。爲此我的所有解決方案都能找到建議我等待元素,或者我再次找到它。不幸的是,我沒有元素的定位器或路徑,我只有元素本身。
我的代碼如下所示:
public void Start()
{
List<IWebElement> elements = _seleniumAdapter.AllElementsOnPage();
Debug.WriteLine("Elementcount: " + elements.Count);
IWebElement element = elements[_random.Next(elements.Count)];
Debug.WriteLine(element.TagName + "," + element.Text);
element.Click();
if (element.GetAttribute("type").Contains("text"))
{
Debug.WriteLine("text!");
element.SendKeys(randomLetter());
}
Start();
}
有沒有什麼方法可以讓我得到StaleElementReference
身邊? AllElementsOnPage查找元素By.CssSelector("*")
,然後在返回之前過濾該列表,以便僅留下可點擊的元素。
我們的應用中的元素大部分時間都沒有ID,所以我不能使用它。我也沒能找到任何我可以用作獨特選擇器的屬性。
我難倒。
我不會說這是一個非常可行的方法來做到這一點。 CSS選擇器將根據包含**隱藏**元素的頁面大小返回元素的TONS。請記住,硒將無法與隱藏的元素進行交互。會有一些確實無法點擊的元素。並且'Dom'刷新是您現在正面臨的問題我現在使用 – Saifur 2015-02-11 13:03:29
Th AllElementsOnPage返回一個已過濾的列表。隱藏的元素和無法與之交互的內容會被過濾掉,這樣我就可以保留一小堆可點擊和可測試的內容。 – Steve 2015-02-16 13:07:52