Selenium IDE等待按钮启用

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

我正在测试一个相当复杂的Web应用程序。我可以获得selenium让事情到达屏幕上出现按钮的程度。

我希望selenium在出现后单击该按钮。但是使用waitForElementPresent是不够的,因为当按钮出现时,它会在一瞬间被禁用。

我需要selenium实际上等到按钮可点击之后再尝试点击它。

我甚至没有运气,试图找出IDE中是否可行。

谢谢你的帮助! 值得重新迭代,现在我只使用IDE。目前....

selenium selenium-ide
5个回答
4
投票

我真的建议你转移到使用webdriver'正确',通过IDE自动化复杂的应用程序将导致你最终陷入混乱。然而,这不是你的问题,我已经鼓吹了足够的......

您有几个选项,一个可能是您从waitForElementPresent更改为waitForVisible,因为元素存在只检查该元素是否存在于页面上。

下一个最简单的改变是无法将等待硬编码到你的脚本中,硬编码等待通常是不好的做法,但如果这只是一个快速而肮脏的事情,你可以侥幸使用它,只需使用pause命令(记住这需要时间,以毫秒为单位,而不是秒。

最后一个选项是使用更高级的功能waitForCondition,它接受一个javascript来评估,这可以对有问题的元素进行额外的检查,可以检查任何标识为可以点击的属性。


5
投票

我遇到了与Selenium IDE相同的问题。我正在寻找与Selenium中的ExpectedConditions.elementToBeClickable方法相当的方法。

使用Selenium IDE,以下似乎可用于测试使用disabled属性禁用的表单提交输入。因人而异。根据需要进行调整。

click/clickAndWait/submit/submitAndWait命令之前添加此Selenium IDE命令:

    Command: waitForCssCount
    Target: #submit-button[disabled="disabled"]
    Value: 0

此css选择器匹配id为submit-button的元素,该元素的disabled属性设置为“disabled”。该命令将一直等到0次出现,即该按钮不再被禁用。

如果您更喜欢使用Xpath表达式而不是CSS选择器,还可以使用waitForXpathCount命令。

注意:在测试期间,我注意到Selenium IDE有点片状,并且即使使用这个waitForCssCount也不总是可靠地等待。因人而异。


1
投票

我看到有一个waitForVisible命令。你可能想尝试一下。等待DOM加载元素(waitForElementPresent)并且加载的元素实际上变得可见(waitForVisible)可能是两个不同的东西。


1
投票

你可以使用waitForElementNotPresent并给出带有disabled属性的按钮CSS。如果disabled属性不存在,则该按钮处于活动状态,因此您可以获得代码。

以下是我用于Selenium IDE的示例:

Command | Target | Value waitForElementNotPresent | css= input[disabled=""]|

您的CSS可能与您的代码不同,例如将disabled =“disabled”作为状态,但原则保持不变。


0
投票

没有一个建议的答案对我有用,但我可以用storeEval解决它:

storeEval | document.getElementById('opt1').disabled | isEnabled

根据按钮或单选按钮的状态,isEnabled变量为“true”或“false”。

测试用例(用于kantu selenium ide):

{
  "CreationDate": "2018-5-13",
  "Commands": [
    {
      "Command": "open",
      "Target": "http://www.plus2net.com/jquery/msg-demo/radio5.php",
      "Value": ""
    },
    {
      "Command": "storeEval",
      "Target": "document.getElementById('opt1').disabled",
      "Value": "isEnabled"
    }
  ]
}
© www.soinside.com 2019 - 2024. All rights reserved.