Chu*_*Chu 5 ruby watir cucumber
我在做@browser.some_button(:id => 'some_id').enabled?但即使按钮被禁用,它也总是向我返回真实值。
我尝试让睡眠一段时间,然后尝试查看工作流程中的按钮是否意外启用,但事实并非如此。
可能出了什么问题?
问题
元素#已启用?方法仅检查元素是否具有禁用属性。它不会检查其中一个类是否包含单词“disabled”。
例如,给定 html:
<html>
<body>
<input type="submit"id="disabled_id" value="disabled button" disabled>
<input type="submit" id="enabled_id" value="enabled button">
<input type="submit" id="some_id" value="Some_value" class="button is-disabled submit">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
可以看到只有第一个按钮,具有disabled属性,没有启用:
p @browser.button(:id => 'disabled_id').enabled?
#=> false
p @browser.button(:id => 'enabled_id').enabled?
#=> true
p @browser.button(:id => 'some_id').enabled?
#=> true
Run Code Online (Sandbox Code Playgroud)
解决方案
要检查元素是否基于类被禁用,您必须检查类属性。
假设页面有以下 html,其中包括处于“禁用”和“启用”状态的按钮:
<html>
<body>
<input type="submit" id="some_id_disabled" value="Some_value" class="button is-disabled submit">
<input type="submit" id="some_id_enabled" value="Some_value" class="button submit">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
一种解决方案是在将类包含为定位器时检查该元素是否存在:
p @browser.button(:id => 'some_id_disabled', :class => 'is-disabled').present?
#=> true
p @browser.button(:id => 'some_id_enabled', :class => 'is-disabled').present?
#=> false
Run Code Online (Sandbox Code Playgroud)
或者,如果您之前定位/存储了该元素,则可以检查 class_names (而不是重新定位该元素):
e = @browser.button(:id => 'some_id_disabled')
p e.class_name.split.include?('is-disabled')
#=> true
e = @browser.button(:id => 'some_id_enabled')
p e.class_name.split.include?('is-disabled')
#=> false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2560 次 |
| 最近记录: |