首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在硒里等几秒钟?

问在硒里等几秒钟?
EN

Stack Overflow用户
提问于 2014-11-25 06:59:30
回答 4查看 5K关注 0票数 1

我已经编写了一个selenium代码来选择浏览器上的一个按钮并单击它,但是我希望selenium在移动到那个element.How时等待几秒钟,我可以这样做吗?下面是我尝试过的代码,但它对我不起作用。

我的代码:

代码语言:javascript
复制
    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(),但这也不起作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-25 07:23:54

Java似乎有一个方法pause(long)。

根据文档,它需要一个long,它表示暂停的毫秒数。

代码语言:javascript
复制
   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对象,然后在执行时执行整个操作序列。

票数 5
EN

Stack Overflow用户

发布于 2014-11-25 07:27:03

你也可以试试这种方式,

代码语言:javascript
复制
Actions actionobj = new Actions(fd1);
actionobj.moveToElement(heatmap).build().perform();
Thread.sleep(10000); 
actionobj.click(heatmap).build().perform();
票数 2
EN

Stack Overflow用户

发布于 2014-11-25 07:04:32

这是因为perform()调用是执行操作的地方。在这里,您需要首先为moveToElement()创建两个操作并执行该操作。然后创建单击操作并执行操作。

希望这能有所帮助。如果这不是你想要的,或者你的意思不同,请留下评论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27120530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档