Selenium中的Sendkeys

时间:2016-07-26 22:27:33

标签: javascript java angularjs selenium selenium-webdriver

我尝试使用selenium发送密钥,并且它不想在第一次尝试时发送它们。基本上我们的应用程序建立在HTML5,Javascript,Angularjs上。我们在第一页上有视频播放器(来自AngularJS的Videogular)。我可以通过发送键暂停/播放视频:

Actions action = new Actions(driver);
    action.sendKeys(String.valueOf("p")).perform();

OR

 Actions action = new Actions(driver);
    action.sendKeys(String.valueOf("f")).perform();

但是当我试图转发时,通过以相同方式发送密钥来回放(f / r)

driver.findElement(By.xpath("//body")).sendKeys("f");

玩家根本没有反应,有时我会放入5或10的循环来查看结果 但是,如果我使用真正的键盘,它首先尝试没有问题。 我甚至这样做了:

{{1}}

我在发送密钥之前甚至在视频播放器上点击(用户故事中不需要),仍然没有运气

花一整天时间搞清楚,仍然没有运气。可能是任何一个有类似问题的人都知道如何解决它?

任何帮助表示赞赏

enter image description here

2 个答案:

答案 0 :(得分:0)

Actions API中还有另一个sendKeys方法,该方法采用目标 WebElement

sendKeys(WebElement element, CharSequence... keysToSend) 

我试一试。

Actions actions = new Actions(driver);     
//FIXME:  Get correct lookup for the VideoPlayer element.   
WebElement videoPlayer = driver.findElement(By.xpath(""));        
String play = "p";        
//Send "p" to the videoPlayer webElement
actions.sendKeys(videoPlayer, play).perform();

您正在使用的方法

sendKeys(CharSequence... keysToSend)

将命令发送到活动元素,该活动元素可能不是您想要接收密钥的VideoPlayer。

答案 1 :(得分:0)

不要将密钥发送到页面正文,而是尝试将密钥按键添加到容器中,将它们发送到容器中:

driver.findElement(RfBy.cssSelector(".video-container"))
      .sendKeys("f");