如何使用webdriver单击隐藏的下拉菜单元素,这不是一个选择

时间:2013-05-02 09:41:10

标签: webdriver selenium-webdriver selenium-rc selenium-grid

我想点击子菜单中的删除。

我尝试了以下代码,但没有任何反应。

wd_handle.execute_script("document.getElementById('optionPanel').hidden=false;")
mouse.move_to_element(OptionPanel).perform()
WebDriverWait(wd_handle,10)
wd_handle.find_element_by_partial_link_text('Delete').click()

HTML来源:

<div id="optionPanel" style="height: auto; width: auto; left: 126px; top: 368px; display: none; overflow-y: hidden;">'
 <div class="wrapper">
  <ul aria-hidden="false" role="menu">
   <li role="menuitem">
   <li role="menuitem">
   <li class="divider" role="menuitem">
    <a class="optionPanelLink" tabindex="0" 
    href="#playlistManager/action=delete/selected=701f55af-c5f0-4f31-b34f-964f52be5fef/idx=0">
    Delete</a>
   </li>
  </ul>
 </div>
</div>

我必须点击id为= 7ba9b231-5fc4-448b-b41a-f236437c182cCount的元素才能使上述元素可见。

<li class="playlist viewing"> 
<a id="7ba9b231-5fc4-448b-b41a-f236437c182cLink" class="ellipsis" title="TestList2" href="#playList/name=TestList2/list=7ba9b231-5fc4-448b-b41a-f236437c182c">TestList2</a> 
<span class="entryCount">0</span> 
<a id="7ba9b231-5fc4-448b-b41a-f236437c182cCount" class="customPlaylistSpriteLocation optionSprite" href="#option/playlist=TestList2/selected=7ba9b231-5fc4-448b-b41a-f236437c182c/idx=0"></a> 
</li> 

4 个答案:

答案 0 :(得分:4)

您可以使用xpath

单击隐藏的菜单项
import org.openqa.selenium.interactions.Actions;
   Actions builder = new Actions(driver); 
   builder.moveToElement(driver.findElement(By.xpath("Enter Menu here"))).build().perform();
  builder.moveToElement(driver.findElement(By.xpath("Enter Target here"))).build().perform();
  driver.findElement(By.xpath("Enter Target here")).click()

希望这是代码

答案 1 :(得分:0)

您确定find_element_by_partial_link_text('Delete')有效并返回元素吗?

如果它确实无效,我建议使用cssSelector,如:"li.divider a"

告诉我发生了什么事。

答案 2 :(得分:0)

替换:

wd_handle.execute_script("document.getElementById('optionPanel').hidden=false;")

使用:

wd_handle.execute_script("document.getElementById('optionPanel').style.display='block';")

如果它不起作用,那么尝试使用它们(一个接一个)......

答案 3 :(得分:-1)

首先检查你的子菜单项,在哪个地方删除按钮突出显示......使用悬停。并将其作为参考wrt id,你可以点击删除按钮...这里是一个代码

WebElement wb=driver.findElement(By.xpath("//li[@datapostid='52f377a10a1de86e33f9bc90']/div"));
        Actions act=new Actions(driver);
        act.moveToElement(wb);
        act.perform();
        driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
        wb.findElement(By.cssSelector("span.commdelete")).click();