2011-12-21 125 views
3

互動目前我正在嘗試解析示例網站。 在該網站有一個設置爲「display:none」 以便應用css效果。我的意思是事實上,選擇 組件是可見的。元素當前不可見,因此可能不會與

如何設置值爲該html 選擇組件?

這裏是我的代碼:

WebElement element = driver.findElement(By.name("paper")); 
Select paperList = new Select(element); 
paperList .selectByValue("73"); // it gives error 
driver.findElement(By.className("btn1")).click(); 

我使用Java +硒的webdriver 2.0

這裏是個例外:org.openqa.selenium.remote:

所致。 ErrorHandler $ UnknownServerException:元素當前不可見,所以 不能與構建信息交互:版本:'2.14.0',修訂版: 'unknown',時間:'2011-11-29 13:13:16'系統信息:os.name:'Windows XP',os.arch:'x86',os.version:'5.1',java。版本:'1.7.0-ea'

謝謝。

回答

7

那麼有兩種不同的方式來處理這個問題,我可以想到。首先清理頁面上的CSS,以便在同一元素上沒有兩個相互衝突的樣式。其次,我的猜測是你有一些JavaScript的啓用選擇菜單,它可能會在你的硒測試抓住對象並說它不可見之後觸發。嘗試在獲取代碼之前刪除thread.sleep,僅用於測試目的。如果解決了這個問題,那麼我會創建一個JavaScript來尋找document.readyState,如果它是「完整的」,那麼我會開始用Selenium解析頁面。

------編輯------

好修改與您需要使用JavascriptExecutor類,並將其投放到您的硒的webdriver的DOM。當你這樣做後,你可以在頁面上的selenium應用程序中執行javascript,這意味着你可以操縱DOM。

下面是一個例子:

WebDriver driver; // Assigned elsewhere 
JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("document.getElementById('//elementID').removeAttr('display');"); 

http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions

http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/JavascriptExecutor.html

+0

好主意......我如何通過硒webdriver清理CSS?任何示例代碼? – Lurtz 2011-12-22 11:59:21

+0

它不起作用。我可以通過webdriver發佈網址 Like driver.post(「http://www.test.com/sample.asp?param1=&country=222」); – Lurtz 2011-12-26 07:41:15

1

與所有的// DIV屬性恰好找到UI元素讓我在每次運行來定位元素。 包含所有屬性以查找類名,文本,樣式等元素。

0

請將您的硒獨立服務器更新至2.35.0或更高版本(如果可用)。該jar文件需要更新。我有同樣的問題,我正在使用jar文件版本2.33.0,並且一旦我更新/下載了2.35.0的新selenium獨立服務器jar文件,它解決了我的問題。

相關問題