超链接没有此类元素异常

时间:2014-10-30 22:56:47

标签: selenium

我在使用Internet Explorer 11的win 7上使用selenium webdriver 2.41.0并且无法点击"我的请求"链接。 HTML看起来像这样

<html class="ltr" dir="ltr">
<head>
        <body class="navigator ">
            <div class="nav-wrapper">
                <div id="div.c16bf8b2089e8100af3b7af3edb7aefd" class="app_menu_div" style="display: block;" sclabel="false" extinct="true" appid="c16bf8b2089e8100af3b7af3edb7aefd">
                <span id="c16bf8b2089e8100af3b7af3edb7aefd" class="submenu" style="display:block;">
                    <table cellspacing="0" cellpadding="1" border="0" width="100%">
                        <tbody>
                            <tr id="module.dd9d893a089e8100af3b7af3edb7ae21" name="nav.module" moduleparent="c16bf8b2089e8100af3b7af3edb7aefd" moduletype="DIRECT" modulename="Dashboard" moduleid="dd9d893a089e8100af3b7af3edb7ae21">
                            <tr id="module.70fbfcf2089e8100af3b7af3edb7ae43" name="nav.module" moduleparent="c16bf8b2089e8100af3b7af3edb7aefd" moduletype="LIST" modulename="Workspace" moduleid="70fbfcf2089e8100af3b7af3edb7ae43">
                            <tr id="module.6b7b70f2089e8100af3b7af3edb7ae2c" name="nav.module" moduleparent="c16bf8b2089e8100af3b7af3edb7aefd" moduletype="DIRECT" modulename="Request" moduleid="6b7b70f2089e8100af3b7af3edb7ae2c">
                            <tr id="module.8eb40db6089e8100af3b7af3edb7ae75" name="nav.module" moduleparent="c16bf8b2089e8100af3b7af3edb7aefd" moduletype="LIST" modulename="My Requests" moduleid="8eb40db6089e8100af3b7af3edb7ae75">
                                <td class="noWrap" colspan="2">
                                    <img align="left" width="16" height="16" src="MyRequests_16.pngx"/>
                                        <h3 class="nav_menu_header">
                                            <a id="8eb40db6089e8100af3b7af3edb7ae75" class="menu" href="https://clouddev.service-now.com/sc_request_list.do?sysparm_userpref_module=8eb40db6089e8100af3b7af3edb7ae75&sysparm_query=active=true^opened_by=javascript:gs.getUserID()^EQ" data-cancelable="true" target="gsft_main" style="">My Requests</a>
                                        </h3>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </span>
            </div>
        </body>
    </html>

我到目前为止尝试的代码是

WebElement myReq = driver.findElement(By.partialLinkText("My Requests"));
myReq.click();

driver.findElement(By.xpath("//a[contains(text(), My Requests)]")).click();

driver.findElement(By.xpath("html/body/div[1]/span/table/tbody/tr[4]/td/h3/a")).click();

对于以上所有选项,我都会得到

  

NoSuchElementException:无法找到带有xpath的元素

我可以尝试其他任何选项吗?

由于

4 个答案:

答案 0 :(得分:0)

它似乎在任何IFrame内部,这就是为什么你没有得到xpath。首先切换到IFrame,然后使用此xpath单击Web元素。

答案 1 :(得分:0)

试试这个:

WebElement myReq = driver.findElement(By.xpath("//a[text()= 'MyRequests']"));
myReq.click();

答案 2 :(得分:0)

使用// a [包含(@id,&#39; 8eb40db6089e8100af3b7af3edb7ae75&#39;)]

// a [包含(text(),&#39; My Requests&#39;)]

其中任何一个都可以。

继续编码

答案 3 :(得分:0)

从html代码中我怀疑,它是菜单栏下的一个链接。 在这种情况下,您必须将鼠标悬停在菜单栏上,以便显示菜单项。然后,您可以使用以下代码单击菜单下的所需项目:

Actions act = new Actions(driver);
act.movetoElement(driver.findElement(By.xpath("//div[@id='div.c16bf8b2089e8100af3b7af3edb7aefd']"))).build().perform();
WebElement myReq = driver.findElement(By.xpath("//tr[@id='module.8eb40db6089e8100af3b7af3edb7ae75']//a"));
myReq.click();


如果它不是菜单栏下的项目,并且直接显示在网页上,您只能使用以下代码:

WebElement myReq = driver.findElement(By.xpath("//tr[@id='module.8eb40db6089e8100af3b7af3edb7ae75']//a"));
myReq.click();