我正试图从以下网站找到一个下拉菜单按钮:
检查"CRO Dashboard DropDown Menu"的元素片段
我的目标是找到下拉按钮元素,点击它打开菜单,然后继续对它进行其他操作
当尝试通过id:定位下拉菜单按钮时,出现以下错误
OpenQA。硒。NoSuchElementException:"没有这样的元素:无法定位元素:{"方法":"css选择器","选择器":"#dashboardSelectorLink"}
参考图像,从突出显示的部分,我尝试使用各种定位器,如通过id查找元素、css选择器、类名,甚至xpath但程序仍然找不到它,因此我可以单击该元素。
以下是我尝试过的一些代码:
dropdown = FindElementByCSS(dropdown, ".ms-crm-ImageStrip-Dropdown_Arrow");
dropdown = FindElementByXPath(dropdown, "//a[@id='dashboardSelectorLink']/span[2]/img");
dropdown = driver.FindElement(By.CssSelector("a[id="dashboardSelectorLink"]"));
dropdown = FindElementByID(dropdown, "dashboardSelectorLink");
dropdown = FindElementByXPath(dropdown, "//cssclass[@id='dashboardSelectorLink']");
dropdown = FindElementByCSS(dropdown, "cssclass[id = 'dashboardSelectorLink']");
dropdown = FindElementByID(dropdown, "dashboardSelectorLink");
dropdown = FindElementByClass(dropdown, "cssclass[id= 'dashboardSelectorLink']");
dropdown = FindElementByID(dropdown, "dashboardSelectorContainer");
变量"下拉列表"是IWebElement类型,我正在为Selenium C#使用chrome驱动程序。
对于上下文,代码位于以下函数中:
public void EnterDashboardArea()
{
IWebElement navbtn = null;
IWebElement category = null;
IWebElement dropdown = null;
navbtn = FindElementByID(navbtn, "Tab1");
ClickElement(navbtn);
category = FindElementByID(category, "MNG");
ClickElement(category);
Thread.Sleep(5000); //pausing the program so the page fully loads and all elements appear
dropdown = driver.FindElement(By.CssSelector("img[class='ms-crm-ImageStrip-Dropdown_Arrow']"));
ClickElement(dropdown);
}
在函数EnterDashboardArea((中,web元素最初设置为none,然后在返回元素值时由函数"FindElementByX"填充。
函数"FindElementByX"是我自己创建的,例如:
public IWebElement FindElementByID(IWebElement ele, string id) {
ele = driver.FindElement(By.Id(id));
return ele;
}
为了准确定位目标,我甚至尝试安装硒铬扩展,但仍然没有成功。
我能做什么?-感谢
可能是您试图在元素加载到DOM之前检索该元素吗?请尝试在读取元素之前设置超时。
此外:元素是否包含在打开之前最初隐藏的容器中?在尝试读取元素之前,您可能必须单击一些显示容器和其中的目标元素的按钮。