无法在鼠标悬停时从下拉框中选择值

时间:2013-11-05 12:15:14

标签: html xpath selenium selenium-webdriver

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

我正在使用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="">

3 个答案:

答案 0 :(得分:0)

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

  1. 单击包含选择容器的div以使其打开 Element.click()。
  2. 然后,选择“Option”元素作为List并迭代  通过它直到你找到使用el.getText()或el.getAttribute(“id”)或的字符串匹配  不管。
  3. 我在Etsy search example project上做了类似的事情,其中​​shows以Etsy动态搜索为例。

答案 1 :(得分: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();

答案 2 :(得分: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的代码将无效。