无法在禁用和启用状态下断言双作用按钮
Unable to Assert dual-actioned button in it's disabled and enabled state
我在一个下面有一个按钮 class。它们被配置为双重作用。
它们在特定事件之前被禁用。他们的 DOM 被禁用时:
<div class="doc-buttons">
<a href="#" onclick="actualsize();" id="tip-size" class="left btn btn-white btn-rounded btn-sm icon-size tooltipstered" disabled="disabled">
<i></i>
</a>
<a href="#" onclick="scaletofit();" id="tip-fit" class="left btn btn-white btn-rounded btn-sm icon-fit tooltipstered" disabled="disabled" style="display: none;">
<i></i>
</a>
...
在某个事件之后,它们被启用并且它们的 DOM 更改为:
<div class="doc-buttons">
<a href="#" onclick="actualsize();" id="tip-size" class="left btn btn-white btn-rounded btn-sm icon-size tooltipstered">
<i></i>
</a>
<a href="#" onclick="scaletofit();" id="tip-fit" class="left btn btn-white btn-rounded btn-sm icon-fit tooltipstered" style="display: none;">
<i></i>
</a>
...
...
...
我所要做的就是断言(使用 TestNG)它们在正确的时间启用和禁用(听起来很简单!)
ele1 = _driver.findElement(By.xpath("//a[@id='tip-size']"));
ele2 = _driver.findElement(By.xpath("//a[@id='tip-fit']"));
ele1,2代表这些button/s.
的定位器
System.out.println("ele1.getAttribute("disabled")");
System.out.println("ele2.getAttribute("disabled")");
令我惊讶的是,无论按钮的状态如何(启用或禁用),上面的打印语句总是 return TRUE
我应该如何断言它们处于禁用和启用状态?
PS:我是 WebDriver、Java 和 TestNG 的新手。对博客等的任何解释,link 将不胜感激
你的应该可以。不知道为什么不。但是,另一种解决方法可能是检查 JavaScriptExecutor
中是否存在该属性
boolean hasTipSize = (boolean) ((JavascriptExecutor)driver).executeScript("return document.getElementById('tip-size').hasAttribute('disable')");
boolean hasTipFit = (boolean) ((JavascriptExecutor)driver).executeScript("return document.getElementById('tip-fit').hasAttribute('disable')");
他们应该 return true if disabled
attribute present else false
在所谓的"event"之后应该重新初始化元素。
步骤:
1.捕获元素ele1,ele2。
ele1.getAttribute("disabled") will be "true/disabled"
ele2.getAttribute("disabled") will be "true/disabled"
执行事件(改变元素的状态)
现在再次捕获元素。
ele1 = _driver.findElement(By.xpath("//a[@id='tip-size']"))
ele2 = _driver.findElement(By.xpath("//a[@id='tip-fit']"));
现在提取元素 properties/attributes。
ele1.getAttribute("disabled") should be updated
ele2.getAttribute("disabled") should be updated
我在一个下面有一个按钮 class。它们被配置为双重作用。 它们在特定事件之前被禁用。他们的 DOM 被禁用时:
<div class="doc-buttons">
<a href="#" onclick="actualsize();" id="tip-size" class="left btn btn-white btn-rounded btn-sm icon-size tooltipstered" disabled="disabled">
<i></i>
</a>
<a href="#" onclick="scaletofit();" id="tip-fit" class="left btn btn-white btn-rounded btn-sm icon-fit tooltipstered" disabled="disabled" style="display: none;">
<i></i>
</a>
...
在某个事件之后,它们被启用并且它们的 DOM 更改为:
<div class="doc-buttons">
<a href="#" onclick="actualsize();" id="tip-size" class="left btn btn-white btn-rounded btn-sm icon-size tooltipstered">
<i></i>
</a>
<a href="#" onclick="scaletofit();" id="tip-fit" class="left btn btn-white btn-rounded btn-sm icon-fit tooltipstered" style="display: none;">
<i></i>
</a>
...
...
...
我所要做的就是断言(使用 TestNG)它们在正确的时间启用和禁用(听起来很简单!)
ele1 = _driver.findElement(By.xpath("//a[@id='tip-size']"));
ele2 = _driver.findElement(By.xpath("//a[@id='tip-fit']"));
ele1,2代表这些button/s.
的定位器System.out.println("ele1.getAttribute("disabled")");
System.out.println("ele2.getAttribute("disabled")");
令我惊讶的是,无论按钮的状态如何(启用或禁用),上面的打印语句总是 return TRUE
我应该如何断言它们处于禁用和启用状态?
PS:我是 WebDriver、Java 和 TestNG 的新手。对博客等的任何解释,link 将不胜感激
你的应该可以。不知道为什么不。但是,另一种解决方法可能是检查 JavaScriptExecutor
中是否存在该属性boolean hasTipSize = (boolean) ((JavascriptExecutor)driver).executeScript("return document.getElementById('tip-size').hasAttribute('disable')");
boolean hasTipFit = (boolean) ((JavascriptExecutor)driver).executeScript("return document.getElementById('tip-fit').hasAttribute('disable')");
他们应该 return true if disabled
attribute present else false
在所谓的"event"之后应该重新初始化元素。
步骤: 1.捕获元素ele1,ele2。
ele1.getAttribute("disabled") will be "true/disabled"
ele2.getAttribute("disabled") will be "true/disabled"
执行事件(改变元素的状态)
现在再次捕获元素。
ele1 = _driver.findElement(By.xpath("//a[@id='tip-size']")) ele2 = _driver.findElement(By.xpath("//a[@id='tip-fit']"));
现在提取元素 properties/attributes。
ele1.getAttribute("disabled") should be updated ele2.getAttribute("disabled") should be updated