2012-11-24 51 views
0

當我試圖在amazon.com上執行自動搜索時,它會拋出異常'找不到元素',即使認爲元素存在。我試圖通過其ID來訪問搜索文本框。無法使用Selenium IE驅動程序執行自動化亞馬遜搜索

以下是它的一些觀察:

  • Amazon search page對搜索組件正確的ID,但仍然硒無法找到的元素,拋出異常「找不到元素」。
  • 如果您在加載亞馬遜網站後放了一些延遲,然後嘗試找到元素,則會拋出異常「未找到窗口」。
  • 當我試圖使用Selenium驅動程序獲取頁面源代碼時,它也無法獲取正確的源代碼。我得到了IE瀏覽器打開後立即顯示的html頁面的源代碼。

我懷疑亞馬遜加載一些JavaScript以防止自動訪問,我不知道。

任何建議,將不勝感激解決這個問題。

如果有人遇到過此類問題,請分享您的經驗。

謝謝。

+0

你正在嘗試什麼代碼? –

回答

2

工作對我來說..

InternetExplorerDriver d1 = new InternetExplorerDriver(); 
d1.get("http://www.amazon.com/"); 
d1.findElementById("twotabsearchtextbox").sendKeys("cheese"); 
d1.quit; 

這將打開IE 8的窗口和類型的奶酪在搜索框中。注意:我使用的是webdriver 2.25,並且從here下載了最新的IEDriver。

希望您已將保護模式設置爲對您的IE設置中的所有安全區域啓用或相同。

+0

問題出在安全區域/ IE設置。感謝您指出:) – SmartSolution

+0

對於其他誰可能偶然發現這個問題和答案,請參閱[這篇文章](http://jimevansmusic.blogspot.com/2012/08/youre-doing-it-wrong-protected-mode -and.html)以獲得完整解釋,爲什麼在代碼中盲目地設置INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS功能(或與您的語言綁定相當的功能)是個壞主意。該功能必須在代碼中設置,否則在執行'new InternetExplorerDriver()'時會引發異常。 – JimEvans

0
InternetExplorerDriver driver = new InternetExplorerDriver(); 
driver.get("http://www.amazon.com/"); 
driver.findElement (By.id("twotabsearchtextbox").sendKeys("state"); 
or 
driver.findElement (By.xpath("//input[@id='twotabsearchtextbox']").sendKeys("state"); 
or 
driver.findElement (By.xpath("//input[@name='field-keywords']").sendKeys("state"); 
driver.quit;