2011-12-21 122 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文件,它解决了我的问题。

相关问题