我是Selenium的新手,我有以下情况。
我的HTML:
<div class="activeThumbnail thumbnail simple animated zoomIn" data-url="/report/sales-vs-price" style="height: 332px;">
<div class="caption">
<p class="thumbReportTitle">
<a href="/report/sales-vs-price">Sales vs Price</a>
</p>
</div>
</div>
我需要模拟链接中的点击,以便打开报告页面。我根据不同的反应(尝试访问链接或文本)尝试了几种不同的选项:
1.这会引发&#34;元素不可见&#34;
driver.FindElementByCssSelector("a[href*='sales-vs-price']").Click();
在这里,我试图修复&#34;不可见&#34;异常所以现在它不会抛出错误但它也没有做任何事情:
Actions builder = new Actions(driver);
Actions click = builder.MoveToElement(driver.FindElementByCssSelector("a[href*='sales-vs-price']")).Click();
click.Build().Perform();
或
Actions builder = new Actions(driver);
Actions click = builder.MoveToElement(driver.FindElementByXPath("//*[contains(text(),'Sales vs Price')]")).Click();
click.Build().Perform();
3.这会引发&#34;无法找到元素&#34;
driver.FindElementByPartialLinkText("a[href='sales-vs-price']").Click();
4.或者这个例外:&#34;元素不可见&#34;:
driver.FindElementByXPath("//*[contains(text(),'Sales vs Price')]").Click();
我不确定我做错了什么...有没有人知道我是否可以访问data-url?或者有人有其他想法吗?
谢谢!
答案 0 :(得分:1)
你可以尝试一下。
driver.FindElement(By.PartialLinkText("Sales vs Price")).click();
如果使用上述命令抛出未找到元素的异常。使用隐式等待(以确保页面完全加载)。
如果对上述命令没有执行任何操作。使用
driver.FindElement(By.PartialLinkText("Sales vs Price")).sendKeys(Keys.Control);
driver.FindElement(By.PartialLinkText("Sales vs Price")).click();
Keys.Control将焦点带到所需元素。我遇到了与IE驱动程序类似的问题。