gpt4 book ai didi

ruby - watir button.enabled?总是返回真值

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:58 25 4
gpt4 key购买 nike

我在做@browser.some_button(:id => 'some_id').enabled?但即使按钮被禁用,它也总是返回真实值。

我试着休眠了一段时间,然后去看看工作流按钮是否意外启用了,但它没有。

可能出了什么问题?

最佳答案

问题

元素#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>

可以看到只有第一个按钮没有启用,这个按钮有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

解决方案

要检查元素是否基于类被禁用,您必须检查类属性。

假设页面有以下 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>

一个解决方案是在将类作为定位器时检查元素是否存在:

p @browser.button(:id => 'some_id_disabled', :class => 'is-disabled').present?
#=> true
p @browser.button(:id => 'some_id_enabled', :class => 'is-disabled').present?
#=> false

或者,如果您之前定位/存储了元素,则可以改为检查类名(而不是重新定位元素):

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

关于ruby - watir button.enabled?总是返回真值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25049325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com