#c# #xpath #selenium-chromedriver
#c# #xpath #selenium-chromedriver
Вопрос:
<li class="nav-tab" data-li-name="System" data-url="" data-name="System">
<a class="nav_item" data-name="System" href="javascript:;">
<i class="nav-top-icon customicon icon-settings"></i>
<span class="nav_item_text">System</span>
</a>
Я пытался использовать приведенные ниже параметры, но безуспешно. Я получил ошибку в изображении.
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
Actions action = new Actions(driver);
IWebElement element=wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath("//span[@class='nav_item_text' and text()='System']")));
action.MoveToElement(driver.FindElement(By.XPath("//span[@class='nav_item_text' and text()='System']"))).Build().Perform();
driver.FindElement(By.XPath("//span[@class='nav_item_text' and text()='System")).Click();
Пробовал xpath и ниже, но безуспешно
//a[@class=’nav_item’][содержит(.,’System’)])1
Ответ №1:
Кажется, здесь есть более простой локатор — у вас есть этот data-name="System"
атрибут, на котором вы могли бы основывать свой локатор, вместо того, чтобы углубляться в дерево, чтобы проверить текст внутреннего элемента:
driver.FindElement(By.CssSelector("a.nav_item[data-name=System]"))
Или, если вы настаиваете на использовании XPath:
driver.FindElement(By.XPath("//a[@data-name = 'System']"))