我在使用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的元素
我可以尝试其他任何选项吗?
由于
答案 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();