2013-02-08 238 views
0

我正在使用硒webdriver執行1000個測試。 對於每個測試用例,我需要點擊網頁上的「ID」元素。無法使用硒webdriver查找元素

我用WebElement x = driver.findElement(By.xpath("//*[@id='TEST']").click();事件。

但不幸的是,對於幾個測試場景(2或3的1000),它會拋出一個錯誤,指出「無法找到元素」。對於其餘的測試用例,它照常執行。

我試過使用嘗試&捕捉方法&刷新頁面,但功能正常,但性能太慢。

+0

您是否在相同場景中出現錯誤? – Manigandan

+0

由於Selenium會啓動瀏覽器,因此性能會很低,如果你這樣做了1000次,那很明顯。這需要什麼?如果它只是從頁面上獲取一些數據,Selenium是這個工作最糟糕的工具。 – Arran

回答

0

您是否嘗試過使用ExpectedConditions類(http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html) 應該足夠在單擊之前添加一些等待elementToBeClickable的操作。

+0

那麼最好的解決方案是什麼?我試圖添加等待命令,但不是運氣。 – user2000759

+0

我有一個解決方案。解決方法是:driver.manage()。timeouts()。pageLoadTimeout(20,TimeUnit.SECONDS);謝謝大家。 – user2000759

0

你是什麼意思「嘗試&捕捉方法&刷新方法」。 Selenium本身模仿Web瀏覽器,因此它有時不穩定。 1000次測試需要很長時間,因此請確保您的計算機不會入睡,並且不要打擾它的測試過程,直到完成。 如果您最小化瀏覽器,某些測試將失敗。

+0

我添加了刷新和等待命令,它按預期工作。 – user2000759

+0

找出哪個頁面卡住了,在那裏添加一些等待功能。那是我以前做過的。問題的主要原因是當您檢查頁面時,某些頁面內容未準備好。 – yehe

+0

我嘗試過,但隨機掛在各種頁面。但沒有運氣。 – user2000759

0

我會建議可能會增加你的隱含等待。類似於

driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);