我正在尝试使用Chrome,Selenium和c#在Sitecore 8.1中运行一些自动化测试.我的代码不想在Sitecore页面中找到任何元素,特别是体验编辑器.
我遇到“无法定位元素”警告.
例如:我要.Click()的项目是工具栏功能区按钮,以显示工具栏菜单.
这是元素:
<a data-sc-id="QuickRibbon" data-sc-click="trigger:button:toggleshow" data-sc-command="" data-sc-сontrolstaterequest="" data-sc-controlstateresult="" data-sc-postponedcall="" data-sc-ispressed="false" class="sc-quickbar-item sc-quickbar-button sc_QuickbarButton_53 data-sc-registered" title="Toggle the ribbon." data-sc-pagecodescriptfilename="" data-bind="ispressed: ispressed, visible: isVisible, click: click, command: command, enabled: isEnabled" data-sc-require="/-/speak/v1/ribbon/QuickbarButton.js" href="#" style="float:right"><img src="/sitecore/shell/client/Speak/Assets/img/Speak/Common/16x16/white/navigate_down.png" alt="Toggle the ribbon."></a>
这是它的XPath:
/html/body/div/div/div[1]/nav[1]/a[3]
我延长了等待时间,以使其可见,因为加载这些页面可能需要几秒钟.但这没有用.
我努力了:
driver.FindElement(By.XPath("/html/body/div/div/div[1]/nav[1]/a[3]/img")).Click();
这给了我“无法定位”的错误
driver.findElement(By.className("class="sc-quickbar-item sc-quickbar-button sc_QuickbarButton_53 data-sc-registered"")).Click();
我已经尝试了很多其他选项/组合,试图拾取alt文本等,但我只是无法获取它来拾取元素.
有任何想法吗?让我知道您是否需要更多信息.
谢谢
解决方法:
更改此行
driver.findElement(By.className("class="sc-quickbar-item sc-quickbar-button sc_QuickbarButton_53 data-sc-registered"")).Click();
到下面的线:-
driver.findElement(By.className("sc-quickbar-item sc-quickbar-button sc_QuickbarButton_53 data-sc-registered")).Click();
编辑1 ..
如果复合类在这里不起作用,您可以通过使用xpath来执行以下操作:
var wait = new webdriverwait(driver, TimeSpan.FromMinutes(1));
var clickableElement = wait.Until(ExpectedConditions.ElementToBeClickable(By.xpath("//a[@data-sc-id='QuickRibbon']")));
clickableElement.Click();
编辑2 ..
如果您的元素位于框架内,则需要在执行操作之前切换框架:-
driver.SwitchTo().Frame("your frame name or id");
希望它能工作…
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。