如何使用Webdriver在BMC Project中执行下拉列表

时间:2016-10-13 09:39:20

标签: selenium-webdriver

我无法在BMC项目中自动执行下拉功能。尝试了很多选择。这对我很有帮助。请帮忙..

<div id="WIN_0_913111809" class="df arfid913111809 ardbnCustomer Char" arid="913111809" artype="Char" ardbn="Customer" arlbox="0,4,114,17" style="z-index:993;top:2px; left:12px; width:309px; height:21px;" arwindowid="0">
<label id="label913111809" class="label f9" for="x-arid_WIN_0_913111809" style="top: 4px; left: 0px; width: 114px; height: 17px;">Customer*</label>
<textarea id="arid_WIN_0_913111809" class="text sr " cols="20" maxlen="255" style="top:0px; left:119px; width:164px; height:21px;" armenu="COM:CPY:Company=Oper/Cust-Q_ForInteractionCust" mstyle="2" arautoc="2" arautocak="0" arautoctt="400" rows="1" title="" wrap="off"></textarea>
<a class="btn btn3d menu" href="javascript:" style="top:0px; left:288px; width:21px; height:21px;">
<img class="btnimg" src="../../../../resources/images/mt_sprites.gif" alt="Menu for Customer*" title="">
</a>
</div>​

<div class="MenuTableContainer" style="top: 20px;">
<table class="MenuTable" style="width: 386px;" cellspacing="0" cellpadding="0">
<tbody class="MenuTableBody">
<tr class="MenuTableRow">
<tr class="MenuTableRow">
<tr class="MenuTableRow">
<tr class="MenuTableRow">
<td class="MenuEntryNameHover" nowrap="">AARADHANA</td>
<td class="MenuEntryNoSubHover" arvalue="AARADHANA"></td>
</tr>
<tr class="MenuTableRow">
<tr class="MenuTableRow">
<tr class="MenuTableRow">
<tr class="MenuTableRow">
<tr class="MenuTableRow">
<tr class="MenuTableRow">
<tr class="MenuTableRow">
<tr class="MenuTableRow">
<tr class="MenuTableRow">
</tbody>
</table>

My screen looks like

1 个答案:

答案 0 :(得分:2)

这不是一个选择标记,并不是一个标记。它是一个使用tr和td标签构建的附加下拉菜单元素。因此,使用Select类将无效。

选择标记的高级结构示例:

<select>
    <option>first option</option>
    <option>second option</option>
</select

要解决您的问题,您可以直接使用:

driver.findElement(By.xpath("//div[@ardbn='Customer']//textarea")).clear();
driver.findElement(By.xpath("//div[@ardbn='Customer']//textarea")).sendKeys("AARADHANA");

请记住,您输入的文字应该出现在菜单中。输入列表中不存在的值将导致菜单弹出并且字段中没有存储值,因此当您单击“保存”时会抛出错误,因为这是必填字段。

但是,如果你想打开菜单并从那里选择一些东西,你必须等待元素出现并使用其中一个:

如果需要在tr

上执行点击
driver.findElement(By.xpath("//table[@class='MenuTable']//tr[td[.='AARADHANA']]")).click();

如果需要在td上执行点击

driver.findElement(By.xpath("//table[@class='MenuTable']//tr//td[.='AARADHANA']")).click();

虽然要小心,因为 1.课程表中可能有很多元素。隐藏的,如果它们在层次结构中更高,则脚本将失败。 2.如果第一个问题不存在且您尝试选择的客户不可见,则必须滚动直到找到元素才能执行单击。

强烈建议使用sendKeys选项。请确保包含代码段以指明您尝试过的内容。这似乎是理解相关元素结构的一个问题。