如何使用Selenium webdriver滚动swf应用程序

时间:2015-01-26 13:22:42

标签: firefox selenium-webdriver flash sikuli

我正在使用:
Eclipse版本:Luna Service Release 1(4.4.1) - JAVA
Selenium Webdriver版本2.44.0
Sikuli(无论哪个版本都是1.0.2 api)

情况:
我正在使用swf应用程序。内容是一本经常更改内容的小册子。该小册子具有允许您翻页/缩放的按钮。我已设法自动完成小册子的过程,以及分页和缩放。但我希望能够在页面放大后向上/向下滚动页面 在“正常”使用小册子时,您可以通过使用鼠标拖动或使用向上/向下箭头键向上/向下翻页。

我尝试过使用以下内容:

Actions scrolld = new Actions(driver);
scrolld.moveByOffset(0,-100).click();//this is to make sure the booklet is selected
scrolld.keyDown(Keys.ARROW_DOWN);
scrolld.perform();  

^这件事什么也没做 - 我添加了多个发送键命令,我在命令之间使用了例如:Thread.sleep(100)。

JavascriptExecutor jse = (JavascriptExecutor)driver;
           for(int second = 0;; second++)
           {
           if(second >= 3)
           {
           break;
           }
           jse.executeScript("window.scrollBy(0,800)", "");
           System.out.println("Scrolling...");//this prints "Scrolling..." each time a scroll is done.
           Thread.sleep(3000);
           }

^我发现并尝试了这一块 - 它在网站上滚动,但它不会在swf应用程序中滚动 - 即使在我尝试将焦点转移到元素/窗口之后(即使swf没有生成新窗户)。我希望它可以逐步滚动,但也试过jse.executeScript("window.scrollTo(0,document.body.scrollHeight);");也没有做任何事情。

我也尝试过使用(这是Eclipse中的Sikuli) -

Actions build = new Actions(driver);
        build.moveByOffset(0,-100).
        clickAndHold().
        moveByOffset(0, -200).
        release().moveByOffset(0,200);//this was all typed in single line - this line-line view is for legibility. 

^但显然clickAndHold + moveByOffset目前不能一起工作(这是一个错误或其他东西 - 我找不到有人这么说的链接)。

欢迎任何和所有建议 - 请注意我在这个领域相对较新,并不像我希望的那样先进......

1 个答案:

答案 0 :(得分:0)

如果滚动条存在,也许你可以看看sikuli,如果是的话。然后单击滚动条并按住鼠标。然后向上/向下移动鼠标。