我是 selenium IDE 的新手,当我在 maps.google 网站上执行一些测试时,当我在搜索框中输入数据时,它会显示与此相关的数据。例如:当我输入“印度”时,它将显示与所提供数据相关的附加数据列表,如“印度银行”“印度信息热线”等。假设我想从下拉列表中选择任何特定数据成为那个命令和目标。
提前致谢
我是 selenium IDE 的新手,当我在 maps.google 网站上执行一些测试时,当我在搜索框中输入数据时,它会显示与此相关的数据。例如:当我输入“印度”时,它将显示与所提供数据相关的附加数据列表,如“印度银行”“印度信息热线”等。假设我想从下拉列表中选择任何特定数据成为那个命令和目标。
提前致谢
Try this code and let me know it work for you or not.
<tr>
<td>open</td>
<td>https://maps.google.co.in/</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Google Maps</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=gbqfq</td>
<td>indian restaurant</td>
</tr>
<tr>
<td>pause</td>
<td>1000</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>javascript:prompt(" Enter what you want to from dropdown")
</td>
<td>dropdown</td>
</tr>
<tr>
<td>type</td>
<td>id=gbqfq</td>
<td>${dropdown}</td>
</tr>
<tr>
<td>click</td>
<td>id=gbqfb</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>https://maps.google.co.in/</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>javascript:prompt(" Enter what you want to search")</td>
<td>search</td>
</tr>
<tr>
<td>type</td>
<td>id=gbqfq</td>
<td>${search}</td>
</tr>
<tr>
<td>storeEval</td>
<td>javascript:prompt("Enter which you want from drop down")</td>
<td>googlesearch</td>
</tr>
<tr>
<td>type</td>
<td>id=gbqfq</td>
<td>${googlesearch}</td>
</tr>
<tr>
<td>click</td>
<td>id=gbqfb</td>
<td></td>
</tr>
谢谢你。
1) 使用 typekeys 输入“india”(它更接近键盘输入)
2) WaitForElementPresent ([your xpath][1] or [your xpath] index=1) - 包括下拉列表的第一个元素以确保它存在。请记住,Selenium 通常比您的应用程序和/或浏览器运行得更快,因此请在您刷新或加载某些内容时使用 WaitForElementPresent。
3) 选择你的元素 select [your xpath] index=1
但请确保输入的值应导致非空列表(您可能没有“印度”记录)。
====================
这是您应该使用的代码(我在我这边检查过):
<!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="https://www.google.com.ua/" />
<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>waitForElementPresent</td>
<td>gbqfq</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>gbqfq</td>
<td>bitragunta</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//html/body/div5/table/tbody/tr/td/div</td>
<td>index=1</td>
</tr>
<tr>
<td>mouseOver</td>
<td>//html/body/div5/table/tbody/tr/td/div</td>
<td></td>
</tr>
<tr>
<td>mouseDown</td>
<td>//html/body/div5/table/tbody/tr/td/div</td>
<td></td>
</tr>
</tbody></table>
</body>
1)请在我的初始代码中将一行从<link rel="selenium.base" href="https://www.google.com.ua/" />
更改为<link rel="selenium.base" href="http://maps.google.com/" />
如果没有帮助,试试这个:
2) 尝试使用这个定位器://div[@id='hm']/table/tbody/tr/td/div
如果不起作用,那么试试这个
3)尝试逐步执行我的脚本(使用菜单操作 - 执行此命令)。当列表显示时,使用 Firebug 或类似工具探索它以找出它的 xpath。也许谷歌针对不同的国家有不同的页面?
==================================================== =
1)关于error.[error] Element //html/body/div5/table/tbody/tr/td/div not found:这个元素只有在列表展开时才能找到(即在搜索文本框中键入内容后)
2)你问正确的方法是什么意思?当然,我不会建议任何对我来说听起来不对的事情。您可能想要更改的唯一一件事是对列表使用更简单的定位器。但试着让它先工作。
3)您无法添加哪些代码?请更具体。
我有同样的问题,并想出了这个解决方案:
storeText | Xpath (ex: //div[3]/div/select/option[4]) | variable
selectAndWait| id=(drop down)|label=${variable}
由于每次页面加载时下拉列表中的选项都会更改,因此每次测试时存储选项然后调用该变量将每次从下拉列表中选择正确的选项。唯一的限制是下拉菜单中的选项不总是相同的顺序。如果您只是想始终选择第一个选项,请在 Xpath 中使用
.../option[1]
希望这可以帮助