【问题标题】:How to perform dropdown in BMC Project using Webdriver如何使用 Webdriver 在 BMC 项目中执行下拉菜单
【发布时间】:2016-10-13 23:05:06
【问题描述】:

我无法在我的 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

【问题讨论】:

  • 我的代码中出现错误 - 元素应该是“select”但是“textarea”
  • 你能粘贴代码吗?如果您使用 SelectByIndexSelectByText 方法,则错误很明显,因为您提供的 HTML 中没有 &lt;select&gt; 标签。
  • 您能否根据HTML和屏幕截图给我一些建议。

标签: selenium-webdriver


【解决方案1】:

这不是一个选择标签,也不是一个标签。这是一个额外的下拉菜单元素,由 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. 可能有许多具有“MenuTable”类的元素是隐藏的,如果它们在层次结构中较高,则脚本将失败。 2. 如果第一个问题不存在并且您尝试选择的客户不可见,则您必须滚动直到找到该元素,然后再执行单击。

强烈推荐使用 sendKeys 选项。请确保您包含代码 sn-ps 以表明您已尝试过什么。这似乎是理解相关元素结构的问题。

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 2016-10-10
    • 2018-08-16
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多