1

我必须从下拉框中选择值,但要选择需要鼠标悬停才能打开弹出窗口的值。

我正在使用 sendKeys("Body > Abdomen")。让我知道从下拉框中选择值的正确方法

在第二个下拉框的 HTML 代码之后:

<div id="bodypart_box_1">
<div style="position:absolute;left:185px;z-index: 20">
<ul class="parent">
<li>
<div id="main" class="mailval">events=Object { click=[1]}handle=function()
<input id="bodypart_1" class="bodypart error" type="text"  
onfocus="if($(this).hasClass('disabled')){$(this).blur();}" readonly="readonly"  
value="Select One" name="bodypart_1" title="">
<input id="actualBodypart_1" type="hidden" value="" name="actualBodypart_1">
</div>
<ul id="bodyPartList_1" class="top sub bodyPartList" style="display:   
block;">olddisplay="block"
<li class="">

<div class="mailval fly" title="Body" originaltitle="Body">Body</div>events=Object {   
click=[1], mouseover=[1]}handle=function()
<ul style="display: block;">olddisplay="block"
<li class="">

<div class="mailval " title="Body > Abdomen" originaltitle="Body > 
Abdomen">Abdomen</div>events=Object { click=[1], mouseover=[1]}handle=function()
</li>
<li class="">
4

3 回答 3

0

基本上,您必须首先将鼠标移动到“菜单项”下拉菜单,然后将鼠标移动到要选择的选项,然后单击选项。

对于 Ruby,以下是一行代码:

driver.action.movet_to(el1).movet_to(el2).click.perform

我不了解 Java,但您可以应用上述逻辑。我尝试使用以下 Java 代码,看看它是否有效或在需要的地方进行修改:

WebElement element1 = driver.findElement(By.linkText("Manage Channels")); 
WebElement element2 = driver.findElement(By.xpath("//li/a[contains(., \"Manage Channels\")]"))

Actions action = new Actions(driver);    
action.moveToElement(element1).moveToElement(element2).click().build().perform();
于 2013-11-08T13:28:41.830 回答
0

简单的答案是做这样的事情:

  1. 单击包含选择容器的 div 以使用 Element.click() 打开它。
  2. 然后,将 select "Option" 元素作为 List 获取并遍历它,直到使用 el.getText() 或 el.getAttribute("id") 或其他方式找到匹配的字符串。

我在我的Etsy 搜索示例项目中做了类似的事情它以 Etsy 动态搜索为例。

于 2013-11-05T16:54:18.547 回答
0

您可以通过两种方式进行:

WebElement menu = driver.findElement(By.id("id"));
Actions builder = new Actions(driver);
builder.moveToElement(menu).moveToElement(driver.findElement(submenu)).click().build().perform();

您也可以使用 JavascriptExecutor 点击:

WebElement menu = ff.findElement(By.id("id"));
((JavascriptExecutor)ff).executeScript("$(arguments[0]).click();", menu);

您可以根据您的 HTML 代码更改代码。如果您的浏览器中禁用了 JS,JavascriptExecutor 的代码将无法工作。

于 2015-08-18T09:06:21.767 回答