Невозможно определить элемент, даже используя полный xpath

Я не могу определить элемент во всех приведенных ниже случаях. Пожалуйста, помогите мне определить проблему в моем коде.

HTML код:

<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>

Я хочу нажать на элемент в теге < 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")));

4 ответа

Может быть несколько причин, по которым вы не можете идентифицировать элемент. Некоторые из ваших селекторов в целом выглядят правильно для меня. Возможно, ответ на следующие вопросы может помочь,

У вас есть более одной ссылки на странице? Если это так, вам может понадобиться отфильтровать элемент, который вы хотите щелкнуть еще дальше, и избегать использования универсального селектора

 List<WebElement> links = driver.findElements(By.linkText("Test CRM Centre"));
 System.out.println(links.size());

У вас есть проблемы с синхронизацией? Например, вы пытаетесь нажать на текст ссылки еще до того, как он будет отображен? В этом случае вы можете использовать явное ожидание

 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);

Edit#1 Может быть, вы должны попробовать нажать на изображение,

WebElement element = driver.findElement(By.cssSelector("div#DetailedNavigationTree>div>img[id^='DetailedNavigationTree']"));
element.click();

Попробуй это //a[@class="SItreeText"],

Попробуй это

By.xpath("//div[@id='DetailedNavigationTree']//a[contains(text(),'Test CRM Centre')]")

или же

By.cssSelector("#DetailedNavigationTree a.SItreeText")

Пытаться driver.findElement(By.cssSelector("#DetailedNavigationTree .SItreeText")).click();

Другие вопросы по тегам