当前位置: 首页 > 知识库问答 >
问题:

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

红砚文
2023-03-14

请任何人都可以帮助我如何从下拉列表中选择选项,如果元素是不可见的,它是一个布尔属性。以下是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个答案

芮雪风
2023-03-14

在selenium中使用本机API时必须小心。比如webElement。单击()并应用于用户可以在浏览器窗口中使用的元素,即可见元素。

如果下拉列表不可见,则无法使用本机API与它们交互。

可以尝试使用javascript executor。

您最有可能通过执行以下操作来破解选择元素以获得所需的值:jsExecutor.executeScript(String.format("参数[0]. value='%1$s';", value ToSet), selectWebElement);

但是,如果您这样做,则不会真正测试 UI。

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

然而,您的UI应该以某种方式为您提供某种自然的方式,使选择框可见。您是否正在使用prime faces组件或类似的小部件来隐藏输入元素并呈现“漂亮”的div来模拟下拉菜单等?如果是,则与虚拟小部件交互,而不是与本机输入元素交互。

 类似资料:
  • 我正在使用Selenium(Java版本)测试一个基于OpenLayers的API。 我想测试一个使用的功能。控制修改功能。我想单击绘制的特征(SVG),然后拖动并检查它们是否存在、可见或隐藏。 我已经画了一个多边形,并且选择了它。见下图: 这些SVG元素的HTML如下所示: 假设我想选择红点。 我试过: 但是它总是返回一个空列表。 我做错了什么?有人能帮我吗? 多谢了。 编辑1-功能:垂直显示可

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J

  • 我有一个SPA,其中有多个具有相同类的div。我希望量角器选择可见的div并单击它。我一直得到,这让人相信它得到了一些不在这个特定页面上的元素(也许?)。我还得到,这再次让我认为它不是单击可见的,而是不可见的。 这是我的规格: 如何选择可见的 并单击它?

  • 问题内容: 我如何在seleniumwebdriver 3.0 beta版本中使用geckodriver。当我实例化Firefox时: 我得到错误: 线程“主”中的异常java.lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver.gecko.driver系统属性设置;否则,必须执行以下操作:有关更多信息,请参见 https://github.co

  • 问题内容: 我有一个GWT应用程序,正在尝试使用Selenium编写一些测试。 我正在使用XPath来标识测试页面上的元素。使用将无效,因为这些值是由GWT自动生成的,并且可以更改。当我意识到我可以按其标签找到按钮时,事情进展顺利,如下所示: 但是,当我开始运行多个测试时,我开始遇到问题。我意识到问题是,一旦Javascript生成的GWT应用程序的所有不同“页面”都保留在HTML中的隐藏元素中。

  • 我正在尝试在使用VueJs的单页应用程序中开发一个自动化测试,当我单击注册按钮时,页面加载了一个包含元素的表单,但是由于元素根据需要加载,它们不会自动出现在那里,我可以解决在单击注册按钮后放置driver.sleep的问题,但我正在寻找一种解决方法,我尝试了InluductEts和elisEnabled,但我无法得到结果,在这里检查我的代码: const { Builder, By, Key, 直