我已经编写了一个selenium代码来选择浏览器上的一个按钮并单击它,但是我希望selenium在移动到那个element.How时等待几秒钟,我可以这样做吗?下面是我尝试过的代码,但它对我不起作用。
我的代码:
Actions actionobj = new Actions(fd1);
actionobj.moveToElement(heatmap);
actionobj.perform();
fd1.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Actions action2 = new Actions(fd1);
action2.click(heatmap);
action2.perform();我的代码运行良好,但当鼠标移动到按钮时,它不会停止10秒,我也尝试过Thread.sleep(),但这也不起作用。
发布于 2014-11-25 07:23:54
Java似乎有一个方法pause(long)。
根据文档,它需要一个long,它表示暂停的毫秒数。
Actions actionobj = new Actions(fd1);
actionobj.moveToElement(heatmap);
actionobj.pause(10000); //wait 10 seconds
actionobj.click(heatmap);
actionobj.perform();imlicitlyWait()不会暂停您的代码。这是一种让Selenium在没有立即找到WebElement时总是等待几秒钟的方法。
请注意,不建议使用pause()。手动暂停代码是错误的做法。您应该扪心自问,为什么您认为有必要暂停代码。如果您想要模拟一个等待10秒的人,这是非常好的,如果您希望其他一些元素或javascript完成加载,那么您应该考虑使用不同的方法。
编辑:而且您的代码不会中途暂停(即使您使用Thread.sleep()),因为在Action.perform()上执行了整个序列,因为您首先构建了Actions对象,然后在执行时执行整个操作序列。
发布于 2014-11-25 07:27:03
你也可以试试这种方式,
Actions actionobj = new Actions(fd1);
actionobj.moveToElement(heatmap).build().perform();
Thread.sleep(10000);
actionobj.click(heatmap).build().perform();发布于 2014-11-25 07:04:32
这是因为perform()调用是执行操作的地方。在这里,您需要首先为moveToElement()创建两个操作并执行该操作。然后创建单击操作并执行操作。
希望这能有所帮助。如果这不是你想要的,或者你的意思不同,请留下评论。
https://stackoverflow.com/questions/27120530
复制相似问题