我正在努力创建一个测试,当另一个元素被鼠标指针悬停时,会导致隐藏元素出现在页面上,但我没有太多运气。该元素通常在页面上不可见,只有在可见时才能找到或抓取。我已尝试以下方法让它出现,但它想要一个事件作为一个元素,我不太熟悉javascript。
((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].dispatchEvent(mouseover);", elementToHoverOver);
它告诉我没有定义鼠标悬停,但我认为这是一个事件。那么javascript中的事件是什么,我可以使用上面的内容在一行代码中完成所有这些吗?
我也试过
Actions act = new Actions(Driver);
act.MoveToElement(element).Build().Perform();
然后等待,但这不会使元素出现,单击该元素也不会显示弹出窗口。
答案 0 :(得分:0)
如果你查看dispatchEvent(例如here)的文档,你会发现它正在等待一个Event对象,所以除非你在这个地方定义了一个Event:
var mouseover = <Event definition here>
然后鼠标悬停未定义。如果你有javascript中的元素,你可以简单地调用elementToHoverOver.onmouseover()
来触发悬停事件,前提是javascript代码中存在elementToHoverOver。
为了澄清,这段代码是javascript代码,所以假设你的javascript中的某个地方有这样的东西:
var myElement = document.getElementById("myelementid");
然后,您可以使用Javascript执行程序来调用onmouseover事件。
((IJavaScriptExecutor)Driver).ExecuteScript("myElement.onmouseover()");
如果您在javascript端没有合适的变量,也可以直接在ExecuteScript中调用document.getElementById
。 (或者用另一种方法替换document.getElementById以识别元素,如果它没有id)。
((IJavaScriptExecutor)Driver).ExecuteScript("document.getElementById("myelementid").onmouseover()");