所以我一直试图解决这个问题好几个小时。我不知道我做错了什么。让Java Webdriver的“向下箭头”动作起作用
这是一个我正在寻找的字段是<input type="text" id="id_attendees" name="attendees">
。当我输入时,会创建一个js下拉列表。当我按下键盘上的向下箭头时,它工作正常,并选择最佳选择。当我在IDE中执行keyDown --- id=id_attendees --- \40
时,它工作正常,并且也选择了该选项。
我不能让它做同样在Java中的webdriver虽然
Actions actionObject = new Actions(driver);
actionObject.sendKeys(Keys.ARROW_DOWN);
^不起作用。
driver.findElement(By.id("id_attendees")).sendKeys(Keys.ARROW_DOWN);
^不起作用
我试图Keys.DOWN在这两种情况下,那也不行。我创建了一个文字String altm = "\u0040";
,所有这些都是输入一个@
符号。
我也尝试了一堆其他的东西以及没有任何工作。我不知道我错过了什么。
编辑1:
@Roddy谢谢! - 鉴于链接我补充说,做工作(进口DefaultSelenium和WebDriverBackedSelenium后,以下
DefaultSelenium sel = new WebDriverBackedSelenium(driver,vars.siteurl);
sel.fireEvent("//input[@id='id_attendees']", "keydown");
编辑2: - > DOH不工作我有过激显然
可能与正在填充/创建下拉列表的JavaScript并没有被您的输入触发(因此没有任何东西向下箭头* *)。可能想看看[这个问题] (http://stackoverflow.com/questions/9202061/test-autocomplete-with-selenium-webdriver)。 – 2012-08-13 20:05:51
谢谢!这至少能够起作用,下次必须牢记在心。从程序员的角度来看,你对于如何避免它有什么想法吗? – StanM 2012-08-13 20:13:45
一般来说,如果您正在测试的是某种JavaScript功能,那么您需要确认测试逻辑实际上首先触发JavaScript。验证,回调,自动完成和表单通常是可能发生此类事情的地方,所以通过一个JS来看看它是如何被触发并相应地制定测试通常是一个好主意。 – 2012-08-13 20:20:31