【问题标题】:Selenium Webdriver unable to click the sub menu itemSelenium Webdriver 无法点击子菜单项
【发布时间】:2014-11-22 22:29:17
【问题描述】:

我可以遍历菜单项,但是 WebDriver 没有点击最后一个元素。

我的代码sn-p:

WebElement hover0 = driver.findElement(By.id("td_Menu_0"));
WebElement hover = driver.findElement(By.xpath(".//*[@id='role6_Maintain']/table/tbody/tr/td[1]"));
action.moveToElement(hover0).moveToElement(hover);
action.moveToElement(driver.findElement(By.cssSelector("#menuClickable_0_6_0_0")))
      .click().build().perform();

最终的WebElementHTML:

<td onkeydown="return menuClickableOperation(this,event);" 
    onclick="javascript:deleteGrpWindowNode('menu_Maintain',0,'br_w_BusissPartner','BRGUI','Business Partner','','','HJHF');"
    onmouseout="menuDeSelect(this);" onmouseover="menuSelect(this)" 
    onmousemove="DisplayIFrame();" tabindex="11" id="menuClickable_0_6_0_0" 
    class="menuNormal2">
  <table width="100%">
    <tbody>
      <tr>
        <td width="100%" style="">
          <p title="Business Partner" class="MenuTxt">Business Partner</p>
        </td>
      </tr>
    </tbody>
  </table>
</td>

【问题讨论】:

    标签: selenium selenium-webdriver


    【解决方案1】:

    试试这个代码:

    action.moveToElement(hover0).build().perform();
    action.moveToElement(hover).build().perform();
    new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#menuClickable_0_6_0_0")));//Waiting for 20 seconds for the final element to be visible.
    action.moveToElement(driver.findElement(By.xpath("//td[@id='menuClickable_0_6_0_0']//p[.='Business Partner']"))).click().build().perform();
    

    【讨论】:

    • 硒没有抛出任何异常,但元素没有被点击,甚至没有被选中
    • 悬停在哪个菜单? “hover0”或**“hover”
    • 首先将鼠标悬停在“hover0”上,使元素“悬停”可见,然后将鼠标悬停在“悬停”上,元素“menuClickable_0_6_0_0”变为可见
    • @VaibhavKhandelwal :试试上面更新的代码,请告诉我。
    • 我尝试了更新的代码,但结果相同,我已经等待直到最后一个元素不可见,并且在您的代码中执行前两个语句后超时
    【解决方案2】:

    由于您已经在 hover0 和 hover 上悬停,我希望第三个对象可用。 那么为什么你不能直接点击第三个对象,比如

    driver.findElement(By.xpath("//td[@id='menuClickable_0_6_0_0']//p[.='Business Partner']").click
    

    反之亦然

    action.click(yourElement).build().perform()
    

    【讨论】:

    • 第三个元素仅在几分之一秒内可见,并且在很短的时间内 Web 驱动程序无法单击该元素
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多