编程语言
首页 > 编程语言> > 在Sitecore 8.1中找不到元素(硒和c#)

在Sitecore 8.1中找不到元素(硒和c#)

作者:互联网

我正在尝试使用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");

希望它能工作…

标签:sitecore,selenium,automation,c
来源: https://codeday.me/bug/20191027/1940748.html