如何在selenium webdriver中使元素可见?

时间:2013-12-04 05:29:37

标签: javascript jquery html css selenium

如果元素不可见且它是布尔属性,请任何人都可以帮助我如何从下拉列表中选择选项。这是html标签:

<select id="visualizationId" style="width: 120px; display: none;" name="visualization">
<option value="day">Day</option>
<option value="week">Week</option>
<option selected="" value="month">Month</option>

正在研究selenium webdriver。以下代码不能正常工作。是否有任何示例代码可以选择不可见的元素。

Actions actions1 = new Actions(driver);
WebElement dBox1= ((new    WebDriverWait(driver,60)).until(ExpectedConditions.elementToBeClickable(By.id("visualizationId"))));
selectByVisibleText("week");
actions1.moveToElement(dBox1);
actions1.click();
actions1.perform();

使用以下行时也会收到错误:元素当前不可见,因此可能无法与命令持续时间或超时交互:32毫秒

Select se=new Select(driver.findElement(By.id("visualizationId")));
se.selectByVisibleText("Week");

se.selectByValue("week");

请参阅html,那里的元素不可见。可以任何人建议我如何使元素可见,然后我如何选择选项。

1 个答案:

答案 0 :(得分:0)

在selenium中使用本机API时必须小心。像webElement.click()这样的东西适用于用户可以在浏览器窗口中使用的元素,即可见元素。

如果看不到下拉列表,则无法使用本机API与它们进行交互。

您可以尝试使用javascript执行程序。

您最有可能通过执行以下操作来破解您的select元素以获得您想要的值: jsExecutor.executeScript(String.format(&#34; arguments [0] .value =&#39;%1 $ s&#39;;&#34;,valueToSet),selectWebElement);

但如果你这样做,你就不会真正测试用户界面了。

否则,您也可以通过执行style.diyplay =&#39; block&#39;来尝试使其可见。 (假设父元素可见)。

但是,您的UI应该以某种方式为您提供某种自然的方式来使该选择框可见。您是否正在使用素数组件或隐藏输入元素的小部件,而是使用#34;漂亮的&#34; div来模拟下降等等?如果是这样,请与虚拟小部件交互,而不是与本机输入元素交互。