Javascript扩展RadMenu Webelement Selenium Webdriver C#
我正在C#中使用Selenium WebDriver。我有一个RadMenu,一旦我做了,我就想在上面悬停;它应该展开一个子菜单,其中包含我要单击的特定webelement。我必须使用JavaScript来单击元素,但这似乎没有扩展菜单,是否有任何java脚本命令可以用来执行此操作。例如:Javascript扩展RadMenu Webelement Selenium Webdriver C#,javascript,c#,selenium-webdriver,radmenu,Javascript,C#,Selenium Webdriver,Radmenu,我正在C#中使用Selenium WebDriver。我有一个RadMenu,一旦我做了,我就想在上面悬停;它应该展开一个子菜单,其中包含我要单击的特定webelement。我必须使用JavaScript来单击元素,但这似乎没有扩展菜单,是否有任何java脚本命令可以用来执行此操作。例如: IJavaScriptExecutor js = ts.getDriver() as IJavaScriptExecutor; js.Execu
IJavaScriptExecutor js = ts.getDriver() as IJavaScriptExecutor;
js.ExecuteScript("arguments[0].style.display='block'",leftPane_Customer);
js.ExecuteScript("arguments[0].click()", leftPane_Customer);
js.ExecuteScript("arguments[0].scrollIntoView(true);",leftPane_Customer);
.click()似乎突出显示了第一个菜单,但这是我所能看到的。有人能提供一个扩展子菜单的解决方案(包括javascript语法)吗
谢谢您可以使用以下方法模拟悬停事件
public static void HoverOn(this RemoteWebDriver driver, IWebElement elementToHover)
{
var action = new Actions(driver);
action.MoveToElement(elementToHover).Perform();
}
然而,在动态切换的元素上单击事件可能会导致很多问题。为了得到非常稳定的点击事件模拟,我使用以下代码
public static void ClickOn(this RemoteWebDriver driver, IWebElement expectedElement)
{
try
{
expectedElement.Click();
}
catch (InvalidOperationException)
{
if (expectedElement.Location.Y > driver.GetWindowHeight())
{
driver.ScrollTo(expectedElement.Location.Y + expectedElement.Size.Height);
Thread.Sleep(500);
}
driver.WaitUntil(SearchElementDefaultTimeout, (d) => driver.IsElementClickable(expectedElement));
expectedElement.Click();
}
}
private static bool IsElementClickable(this RemoteWebDriver driver, IWebElement element)
{
return (bool)driver.ExecuteScript(@"
window.__selenium__isElementClickable = window.__selenium__isElementClickable || function(element)
{
var rec = element.getBoundingClientRect();
var elementAtPosition = document.elementFromPoint(rec.left, rec.top);
return element == elementAtPosition;
};
return window.__selenium__isElementClickable(arguments[0]);
", element);
}
此代码是可维护Selenium项目的一部分。您可以查看项目站点以获得有关使用Selenium创建可维护UI测试的更多信息