元素当前不可见,因此可能无法与之交互

时间:2011-12-21 11:41:26

标签: selenium webdriver

目前我正在尝试解析一个示例网站。 在该网站中有一个设置为“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 + Selenium WebDriver 2.0

以下是例外:

  

引起:org.openqa.selenium.remote.ErrorHandler   $ UnknownServerException:元素当前不可见,因此可能   不与构建信息进行交互:版本:'2.14.0',修订版:   '未知',时间:'2011-11-29 13:13:16'系统信息:os.name:'Windows   XP',os.arch:'x86',os.version:'5.1',java.version:'1.7.0-ea'

感谢。

3 个答案:

答案 0 :(得分:7)

有两种不同的方法可以解决这个问题。首先清理页面上的css,以便在同一元素上没有两个冲突的样式。其次我的猜测是你有一些形式的javascript启用选择菜单,这可能是在你的硒测试抓住对象并且说它不可见之后触发的。在获取代码之前尝试删除thread.sleep,仅用于测试目的。如果这解决了问题,那么我将创建一个寻找document.readyState的javascript,如果它是“完整的”,那么我将开始用Selenium解析页面。

------编辑------

要使用selenium修改DOM,您需要使用JavascriptExecutor类并将其强制转换为WebDriver。完成后,您可以从页面上的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

答案 1 :(得分:1)

使用所有// div属性完全找到UI元素帮助我在每次运行中找到元素。 包括所有属性以查找类名,文本,样式等元素。

答案 2 :(得分:0)

请将您的selenium独立服务器更新为2.35.0或更高版本(如果有)。 jar文件需要更新。我有同样的问题,我使用jar文件版本2.33.0,一旦我更新/下载了2.35.0的新的selenium独立服务器jar文件,它解决了我的问题。