我是selenium IDE的新手,当我在maps.google网站上执行一些测试时,当我在搜索框中输入数据时,它会显示与之相关的数据。 例如:当我键入“india”时,它将显示与提供的数据相关的附加数据列表,如“india bank”“india infoline”等。 如果我想从下拉列表中选择任何特定数据,那将是什么命令和目标。
提前致谢
答案 0 :(得分:0)
1)使用typekeys键入“india”(它更接近键盘输入)
2)WaitForElementPresent([你的xpath] [1]或[你的xpath] index = 1) - 包含下拉列表的第一个元素以确保它存在。请记住,Selenium的运行速度通常比您的应用程序和/或浏览器快,所以每次刷新或加载时都要使用WaitForElementPresent。
3)选择你的元素选择[你的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)关于错误。[错误]元素// html / body / div5 / table / tbody / tr / td / div未找到: 只有在扩展列表时(即在搜索文本框中键入内容后)才能找到此元素
2)通过询问正确的方式你的意思是什么?当然,我不会向我提出任何听起来不对的建议。您可能想要更改的唯一方法是使用更简单的定位器作为列表。但要尽量让它先发挥作用。
3)您无法添加哪些代码?请更具体一点。
答案 1 :(得分:0)
尝试使用此代码,让我知道它对您有用。
<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>
答案 2 :(得分:0)
<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>
谢谢。
答案 3 :(得分:0)
我遇到了同样的问题,并提出了这个解决方案:
storeText | Xpath (ex: //div[3]/div/select/option[4]) | variable
selectAndWait| id=(drop down)|label=${variable}
由于每次页面加载时下拉列表中的选项都会更改,因此存储选项,然后在每次测试时调用该变量,每次都会从下拉列表中选择正确的选项。唯一的限制是下拉菜单中的选项并不总是以相同的顺序。如果您只是想选择第一个选项ALWAYS,请在Xpath中使用
.../option[1]
希望这有帮助