如何检查下拉菜单是否使用selenium扩展

问题描述 投票:1回答:1

我正在自动测试移动网站,我遇到了一个选择问题(包含国家/地区列表)。

菜单就是这样的:

<select id="depart" name="fromIsoCode" aria-controls="depart" aria-expanded="false">
  <option value="xx">yyFullName</option>
  <option value="yy">yyFullName</option>
</select>

重要说明:单击菜单并且用户的“可见”列表时,属性“aria-expanded”变为“true”

我应该做的测试是检查一旦我们选择一个值,列表就不再可见/显示了。

我使用以下代码中的内容进行测试:

By element = By.cssSelector("select#depart[aria-expanded=\"true\"]")
assertFalse(driver.findElement(element).isDisplayed());

问题是,即使元素在到达这些线时不存在,isDisplayed()也会返回true

在调试模式下,元素select#depart[aria-expanded=\"true\"]不在页面的DOM中(但是select#depart[aria-expanded=\"false\"]是)

isDisplayed()的结果与我的预期相反:对于select#depart[aria-expanded=\"true\"],它假设是假的(我没有DOM中的元素,但它是真的,对于select#depart[aria-expanded=\"false\"]它应该是真的(它在DOM中)但它是假的......

我的第一个猜测是,它与我们之前选择的东西有关,但事实证明不,即使检查是我在页面上做的第一件事,它也会失败。

第二个猜测是,它或者是选择元素特有的东西,和/或尝试使用select#depart[aria-expanded=\"true\"]select#depart[aria-expanded=\"false\"]作为不同元素的问题,但我没有其他想法如何处理它。


问题是:

  1. 如何检查是否使用selenium / java扩展了选择/下拉菜单?
  2. 为什么它不按预期工作?

编辑1 03/09/18

我试图测试“aria-expanded”值,它给出了相同的结果。我认为它在DOM中是假的,因为它应该是假的,但是当在调试中查看时,selenium会变为“true”。

编辑2 03/09/18

调试我注意到以下内容:如果我在“观察”我的变量之前“检查”我的浏览器,我在调试中得到的结果是正常的......

调试暂停 - >我添加一个关于“aria-expanded”的监视它给出“true”(而不是预期的“false”) - >我严格点击我的浏览器/检查页面“aria-expanded”是“false” - >我添加了第二块带有相同元素的手表或者“刷新”第一块手表,我在“aria-expanded”中得到了正确的值(“假”)...增加等待时间什么也没做...再多几粒子弹尝试,我会回来更多信息

编辑3 03/09/18

问题不在于下拉菜单的状态。我和我的工作都做了“检查下拉菜单是否扩展”(问题1)

由于这是我接受回答的主要问题。

关于问题2:这可能是一个值得自己提出问题的具体问题,我设法通过在选择中发送“制表键”来暂时绕过它。这是一个“在Emergencie的情况下”修复,但我不想让整个问题悬而未决,我不想让人们至少没有领先。

java selenium drop-down-menu
1个回答
1
投票

尝试:

By element = By.cssSelector("select#depart[aria-expanded='true']")
assertFalse(driver.findElement(element).isDisplayed());

这是您可以尝试的另一种解决方案:

// wait here after you have selected a value so element state is changed and selenium gets updated state. Thread.sleep(); would seem to work best in this case.
String text= driver.findElement(By.id("depart")).getAttribute("aria-expanded");
Assert.assertTrue(text=="false","Dropdown is not expanded");
© www.soinside.com 2019 - 2024. All rights reserved.