【问题标题】:How to make element visible in selenium webdriver?如何使元素在 selenium webdriver 中可见?
【发布时间】:2013-12-20 11:35:46
【问题描述】:

如果元素不可见并且它是布尔属性,请任何人帮助我如何从下拉列表中选择选项。这是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,那里的元素不可见。任何人都可以建议我如何使元素可见那么我该如何选择该选项。

【问题讨论】:

标签: javascript jquery html css selenium


【解决方案1】:

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

如果下拉菜单不可见,则无法使用本机 API 与其交互。

您可以尝试使用javascript执行器。

您很可能能够通过执行以下操作来破解您的选择元素以获得您想要的值: jsExecutor.executeScript(String.format("arguments[0].value = '%1$s';", valueToSet), selectWebElement);

但如果你这样做,你并没有真正测试 UI。

否则,您也可以尝试通过 style.diyplay = 'block' 使其可见(假设父元素可见)。

但是,您的 UI 应该以某种方式为您提供某种自然的方式来使该选择框可见。您是否使用素面组件或隐藏输入元素并呈现“漂亮” div 来模拟下拉列表等的小部件?如果是这样,请与虚拟小部件进行交互,而不是与本机输入元素交互。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多