web - java selenium 设置显式等待 没有效果
问题描述
最近使用的selenium,做个简单的自动化工具,但是测试的时候感觉 WebDriverWait wait = new WebDriverWait(driver,20);没啥效果啊,在我进入邮箱之后wait.until(ExpectedConditions.presenceOfElementLocated(By.id('_mail_component_68_68'))).click(); //打开收件箱
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath('//*[@sign=’letter’][1]'))).click(); 这两段代码明明页面已经有这个元素了,为啥还要等一段时间才进行操作,而且等待是时间也不是固定的,是我电脑问题,很头疼啊,演示的时候非常尴尬的等好长时间。 selenium 用的3.4 火狐用的5.3
static {System.setProperty('webdriver.firefox.marionette','C:Program Files (x86)Mozilla Firefoxgeckodriver.exe');} //火狐浏览器驱动
static String url='http://freemail.163.com/';//浏览器打开的地址
public String openEmail(Stream<String> userNameSream,Stream<String> passwordStream) throws Exception {
long startTime=System.currentTimeMillis(); //获取开始时间 WebDriver driver = new FirefoxDriver(); //启动浏览器driver.manage().window().maximize(); //最大化浏览器WebDriverWait wait = new WebDriverWait(driver,20);driver.get(url);//打开连接driver.switchTo().frame('x-URS-iframe');//定位到iframe框架中userNameSream.forEach(e -> driver.findElement(By.name('email')).sendKeys(e));//输入账号passwordStream.forEach(p -> driver.findElement(By.name('password')).sendKeys(p));//输入账号driver.findElement(By.id('dologin')).click();//点击登录Thread.sleep(3000);if(driver.getTitle().contains('网易邮箱')){ wait.until(ExpectedConditions.presenceOfElementLocated(By.id('_mail_component_68_68'))).click(); //打开收件箱 wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath('//*[@sign=’letter’][1]'))).click(); return '成功,从程序开始到打开第一封邮件用时'+(System.currentTimeMillis()-startTime)/1000+'秒';}else{ try { WebElement loginMsg = driver.findElement(By.className('ferrorhead')); return loginMsg.getText(); }catch(Exception e){return '出现其他问题'; }}
问题解答
回答1:WebDriverWait是全部加载完才会执行click
回答2:不知道为什么 但是解决了 我用的火狐 换谷歌之后就变得很快了
相关文章:
1. 在windows下安装docker Toolbox 启动Docker Quickstart Terminal 失败!2. font-family - 我引入CSS3自定义字体没有效果?3. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?4. macos - mac下docker如何设置代理5. dockerfile - [docker build image失败- npm install]6. objective-c - iOS开发支付宝和微信支付完成为什么跳转到了之前开发的一个app?7. PHP中的$this代表当前的类还是方法?8. angular.js - 求一款angular插件9. java - 我用Tomcat访问SQL server数据库时,出现以下错误,该怎么解决?10. docker start -a dockername 老是卡住,什么情况?