【问题标题】:error Element is not currently visible and so may not be interacted with Selenuim错误元素当前不可见,因此可能无法与 Selenium 交互
【发布时间】:2013-09-23 20:19:22
【问题描述】:

我正在使用 Selenium 记录我在网页上的操作,但是,当我播放测试用例时,出现点击操作抛出错误:元素当前不可见,因此可能无法与之交互。但是,我确信该按钮是可见的,这里是它的 html:

<button class="btn btn-success btnSubmit" style="font-size: 1.9em; width: 100%; height: 2em; margin-top: 20px;" type="submit"> Get Your Report </button>

另外,这是我的 Selenium IDE 测试脚本:

  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://hra.case.edu/" />
<title>New Test</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">New Test</td></tr>
</thead><tbody>
<tr>
    <td>open</td>
    <td>/</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Get Started</td>
    <td></td>
</tr>
<tr>
    <td>keyPress</td>
    <td>name=searchFirstName</td>
    <td>Tiancheng</td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>//div[@id='content']//tbody[@id='select_user']/tr[1]//a</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>//div[@id='content']//tbody[@id='select_user']/tr[1]//a</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>id=answer_heightFoot</td>
    <td>5</td>
</tr>
<tr>
    <td>type</td>
    <td>id=answer_heightInch</td>
    <td>11</td>
</tr>
<tr>
    <td>type</td>
    <td>id=answer_weight</td>
    <td>222</td>
</tr>
<tr>
    <td>select</td>
    <td>id=answer_bodySize</td>
    <td>label=Medium</td>
</tr>
<tr>
    <td>click</td>
    <td>id=answer_diabetes_no</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>link=Other</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>id=next</td>
    <td></td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>//button[@type='submit']</td>
    <td></td>
</tr>
<tr>
    <td>verifyElementPresent</td>
    <td>//button[@type='submit']</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>//button[@type='submit']</td>
    <td></td>
</tr>
</tbody></table>
</body>
</html>

有人知道为什么吗? 提前致谢!

【问题讨论】:

  • 您确定页面上只有一个//button[@type='submit'] 吗?这可能是问题
  • @AlexanderPetrovich 感谢您的回复。你是对的,页面上有2个提交按钮。但是,在我将 Xpath 切换到 .//*[@id='sidebar']/div[1]/button[1] 后,仍然会出现同样的问题...
  • 我猜你一开始发布的 html 示例适合那个按钮?如果是这样,请尝试使用waitForElementPresentwaitForVisible 方法(如果我没记错的话,Selenium IDE 使用时间不长)。顺便说一句,按钮的某些祖先目前可能是不可见的。更大的 html 样本可能会很方便
  • waitForElementPresent 实际上解决了问题!谢谢伙计,我真希望我能给你学分......是的,我只是使用 IDE 创建一个基本脚本并今天切换到 Junit :) 再次感谢你。
  • 哼,你的意思是waitForVisible,对吧?

标签: testing selenium


【解决方案1】:

某些 web 元素可能存在于 DOM 中,但同时是不可见的。因此,在您执行某些操作后,使用 waitForVisible 方法等待元素变得可见和可交互

更新:@Kees de Kooter,这是工作示例

<tr>
    <td>open</td>
    <td>http://stackoverflow.com/</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>css=.js-help-button</td>
    <td></td>
</tr>
<tr>
    <td>waitForElementPresent</td>
    <td>css=.js-help-button</td>
    <td></td>
</tr>
<tr>
    <td>waitForVisible</td>
    <td>css=.js-help-dialog</td>
    <td></td>
</tr>

【讨论】:

  • 这是正确答案!我现在没有足够的声望来投票,任何访问这个问题的人,请投票给这个。
  • 如果您为waitForVisible 提供合适的样品,我会投票。
猜你喜欢
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
相关资源
最近更新 更多