Невозможно определить элемент, даже используя полный 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();
Попробуй это
By.xpath("//div[@id='DetailedNavigationTree']//a[contains(text(),'Test CRM Centre')]")
или же
By.cssSelector("#DetailedNavigationTree a.SItreeText")
Пытаться driver.findElement(By.cssSelector("#DetailedNavigationTree .SItreeText")).click();