我正在尝试自动化测试我的网页。在网页上,我需要选择一个带有类名和文本的锚。锚被包含在div元素中。
<div class="margins0300">
<a tabindex="-32768" class="buttonLinkText">Hilfe</a>
</div>
&#13;
我正在尝试使用<a>
Internet Explorer驱动程序访问Selenium
但无法访问driver.FindElement(By.XPath("//a[contains(@class,'buttonLinkText') and .//text()='Hilfe']"));
。这是我的代码:
{{1}}
但是当我执行它时,没有找到任何元素。
如果有人可以帮助我,我真的很感激吗?
答案 0 :(得分:1)
实际上,当您尝试使用xpath
查找错误的元素时,您将语法作为By.CssSelector()
传递。您应该尝试使用By.Xpath()
,如下所示: -
driver.FindElement(By.Xpath("//a[@class = 'buttonLinkText' and text() = 'Hilfe']"));
您也可以使用By.LinkText()
找到此元素,如下所示: -
driver.FindElement(By.LinkText("Hilfe"));
已修改: - 如果您仍然无法找到此元素,请尝试使用WebDriverWait
等待元素存在,如下所示: -
IWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(3))
IWebElement element = wait.Until(ExpectedConditions.ElementExists(By.Xpath("//a[@class = 'buttonLinkText' and text() = 'Hilfe']")));
注意: - 确保此元素不在任何frame/iframe
内。如果是,则需要在找到元素之前切换frame/iframe
: -
driver.SwitchTo().Frame("frame/iframe name or id");
//Now find the element using above code
//After doing all stuff inside frame/iframe you need to switch back to default content
driver.SwitchTo().DefaultContent();
答案 1 :(得分:0)
这就是我找到答案的原因,因为div元素被包含在一个框架中,并根据@saurabhgaur的输入:
driver.Navigate().GoToUrl("https://websunp8.bk.datev.de/zws/ShowMenu.do");
driver.SwitchTo().Frame("content");
driver.FindElement(By.XPath("//a[@class = 'buttonLinkText' and text() = 'Hilfe']")).Click();