我无法在以下所有情况下识别该元素。请帮我识别代码中的问题。
HTML code:
<div id="DetailedNavigationTree" class="SItree">
<div style="margin-left: 0px; margin-right: 10px; white-space: nowrap;">
<img src="/irj/portalapps/com.sap.portal.design.portaldesigndatathemes /portal/Test_theme/nav/treeview/ico12_treeleaf.gif?7.0.24.1.6"/>
<img id="DetailedNavigationTree/navurl://cd82866421cb92cf96c103eb19061574" src="/irj/portalapps/com.sap.portal.design.portaldesigndata/themes/portal/ford_theme/common/1x1.gif?7.0.24.1.6"/>
<a class="SItreeText" href="#" style="word-wrap: normal; white-space: nowrap;">Test CRM Centre</a>
</div>
我想点击标记&lt; a - Test CRM Centre
我试过的代码:
driver.findElement(By.cssSelector(".SItreeText")).click();
driver.findElement(By.linkText("Test CRM Centre")).click();
driver.findElement(By.xpath("//html/body/table/tbody/tr[1]/td/div[1]/table/tbody/tr/td[1]/div/div/table/tbody/tr/td/span/table/tbody[2]/tr[2]/td[3]/div/div/div[2]/div/a")).click();
driver.findElement(By.cssSelector("#DetailedNavigationTree")).click();
driver.findElement(By.xpath("//a[contains(@href, '#')]")).click();
driver.findElement(By.xpath("//a[@id = 'navNodeAnchor_2_0']")).click();
driver.findElement(By.xpath("//a[contains(@href, '#')]")).click();
driver.switchTo().frame(driver.findElement(By.xpath("//html/body/table/tbody/tr[1]/td/div[1]/table/tbody/tr/td[1]/div/div/table/tbody/tr/td/span/table/tbody[2]/tr[2]/td[3]/div/div/div[2]/div/a")));
答案 0 :(得分:2)
可能有几个原因导致您无法识别元素。您的一些选择器通常对我来说是正确的。或许回答以下问题可能有所帮助,
页面上是否有多个链接可用?如果是这样,您可能需要过滤要进一步单击的元素,并避免使用通用选择器
List<WebElement> links = driver.findElements(By.linkText("Test CRM Centre"));
System.out.println(links.size());
您有任何同步问题吗?就像你试图在它渲染之前点击linkText一样?在这种情况下,您可以使用显式等待
WebDriverWait wait = new WebDriverWait(driver,30);
WebElement link = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Test CRM Centre")));
link.click();
你的元素在任何框架内吗?如果是这样,您需要在找到元素之前切换到框架
WebElement frame = driver.findElement(By.id("myframeid"));
driver.switchTo().frame(frame);
编辑#1 可能是你应该尝试点击图片,
WebElement element = driver.findElement(By.cssSelector("div#DetailedNavigationTree>div>img[id^='DetailedNavigationTree']"));
element.click();
答案 1 :(得分:0)
试试这个//a[@class="SItreeText"]
。
答案 2 :(得分:0)
尝试driver.findElement(By.cssSelector("#DetailedNavigationTree .SItreeText")).click();
答案 3 :(得分:0)
试试这个
By.xpath("//div[@id='DetailedNavigationTree']//a[contains(text(),'Test CRM Centre')]")
或
By.cssSelector("#DetailedNavigationTree a.SItreeText")