我正在使用selenium进行Web应用程序自动化。 我停留在一点上,我正在.ExecuteScript()执行一些操作,例如单击链接,并且为此使用:-
.ExecuteScript()
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click()", driver.FindElement(By.XPath("//a[contains(text(),'Login to the Demo')]")));
[ 注意 :对于正在使用的每个可单击元素,此方法,因为可单击元素可能被隐藏或在网页中不可见]但是此方法不起作用,因为 <select> <option>item<option> .. </select>
<select> <option>item<option> .. </select>
我正在使用下面的代码单击选择选项之一:
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click()", driver.FindElement(By.XPath("//select[@id='form_switcher']/option[5]")));
但没有任何反应,也没有给出任何错误/异常。
- 编辑开始 - 但是如果我不使用它就ExecuteScript()可以正常工作:
ExecuteScript()
driver.FindElement(By.XPath("//select[@id='form_switcher']/option[5]")).Click();
- 编辑结束 -
[ 注意 :我正在使用click来选择选项,以便它触发更改事件。]
因此,任何人都可以向我解释一下如何使用“ ((IJavaScriptExecutor)driver).ExecuteScript
((IJavaScriptExecutor)driver).ExecuteScript
谢谢”预先单击选择选项。
对于下拉菜单,您需要选择而不是单击。您应该返回该元素,然后执行element.SelectedIndex = 5;
element.SelectedIndex = 5;
如果您需要修改JavaScript以通过JavaScript而不是硒来获取元素,则可以利用document.evaluate位于的https://developer.mozilla.org/en- US/docs/Web/API/document.evaluate?redirectlocale=zh-CN&redirectslug = DOM%2Fdocument.evaluate
document.evaluate
因此,您将返回一个代表您的select元素的元素,然后设置该SelectedIndex值。
SelectedIndex
我相信这是正确的…
((IJavaScriptExecutor)driver).ExecuteScript("var element = document.evaluate(\"//select[@id='form_switcher']\", document.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); element.SelectedIndex = 5; return element.fireEvent('event specifics go here')");
http://www.java2s.com/Code/JavaScript/HTML/UsingthefireEventMethod.htm