2013-07-10 33 views
1

我是新来的Selenium IDE,目前未能通过第一个基地,被测试的应用程序会弹出一个登录窗口,用户名为&输入密码然后点击登录按钮,窗口关闭,应用程序显示在主浏览器窗口中,但脚本似乎记录了OK,但在播放时失败,出现元素未找到错误,如果使用“目标查找”按钮找到该字段(突出显示黄色),如果我执行命令它将值写入字段,所以Selenium似乎知道它的存在。Selenium IDE,元素找不到,无论目标enetred

我已经尝试了目标下拉菜单中的所有选项(全部失败),并尝试输入显式xpath,结果相同。任何帮助赞赏。

硒默认目标:

ID =用户名与萤火虫获得

的xpath:

// * [@ ID = “USERNAME”]

显式xPath:

xpath =/html/body/table/tbody/tr/td/div/div/form/table/tbody/tr [6]/td [3]/input [@ id =“USERNAME”]

日志式窗口源代码:

<body text="#000000" marginwidth="0" marginheight="0" oncontextmenu="return false;" topmargin="0" leftmargin="0"> 
<div class="header"> 
<table width="100%" cellspacing="1" cellpadding="1" border="0"> 
<tbody> 
<tr> 
<td width="20%"> </td> 
<td class="Login"> 
<p align="center"> 
<div id="1ULogon"> 
<div id="2ULogon" onclick="websys_sckeys[String.fromCharCode(113)]='websys_help(\'1473\',\'-100000000000000\',\'\');'" style="LEFT: 0px; TOP: 0px"> 
<form id="3ULogon" autocomplete="off" name="3ULogon" method="post" action="logon.asp"> 
<input id="AB" type="HIDDEN" value="4UserLogon" name="AB"> 
<input id="AC" type="HIDDEN" value="zzzzzz" name="AC"> 
<table> 
<tbody> 
<tr> 
<tr> 
<tr> 
<tr> 
<tr> 
<tr> 
<td> 
<td> 
<td> 
<input id="USERNAME" value="" title="Username" tabindex="1" name="USERNAME"> 

UPDATE:

不知道这是否虚假铅 - 窗口名称是:

_parent 

我偶然发现这个“用于一个框架,它将在内部框架内打开”

这与此有什么关系?

父页面上的脚本如下:

<!-- 
var url='logon.asp?xxx'; 

function newwin(url) 
{ 
var 
window.open('','_parent',''); 
window.close(); 
} 
//--> 

然后在BODY标签,我们有

<body onload="newwin(url1);"> 

所以相当有信心,在弹出的窗口被命名为_parent,但高兴另行告知。 ..

+0

你是在告诉硒看看弹出?它可能试图在背景窗口中找到你的xpath(并且没有发现它) – Izzy

+0

是的 - 使用waitForPopUP _Parent&我已验证弹出窗口是焦点。 – ekalb

+0

我以多种格式尝试了这种方法,但没有成功,WaitForElementPresent给出了超时错误,我也尝试了30000的暂停以确保所有内容都已加载并且仍然失败。 – ekalb

回答

1

这听起来像是即使弹出窗口在那里,测试的执行速度太快,但id还没有(因为它工作,如果你手动执行该步骤)。

因为它似乎它不看弹出,您可以在WAITFOR命令

selectWindow | <id of window> | 
waitForElementPresent | id=Username | 

或者之前使用selectWindow,我也用一个焦点命令集中在窗口上(不得不做这很多与角):

focus | <id of window | 
waitForElementPresent | id=Username 

我也成功地使用'clickAt'以及。

clickAt | <id of window, or within window itself> | 
waitForElementPresent | id=Username 
type | id=Username | <username> 

Klendathu

+1

我已根据您的新信息更新了我的答案。 – Klendathu

+0

感谢您的建议,不幸的是这些失败的错误超时,元素未找到&元素未找到。现在抓住吸管我唯一可以看到的关于弹出窗口的奇怪现象是它的名字是'_parent' - 不确定这是否会影响它,因为它通常用于定位框架? – ekalb

+0

谢谢!正如你所说的那样,问题在于测试是加速,所以元素“还没有到”。我添加了一个'waitForElementPresent',我的问题就解决了。 – dbalakirev

3

我已经与硒两种运行过快或不“等待” forPopup类似的问题。我不得不

waitForPopUp        30000 
selectPopUp 

//Do rest of code 

原来迫使selectPopUp努力把硒正确的窗口,在这里selectWindow目标上:姓名/身份证没有工作。弹出后回到父窗口

selectWindow 

命令然后确实工作。

希望这会有所帮助。

0

获取ImplicitWait插件。在它继续运行测试之前,它会自动等待所有元素都存在。它帮助我解决了许多类似的问题