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. javascript - vue 数据更新了。但是dom没有更新,,,,,如图2. java - 为什么要将Runnable接口的子类对象传递给Thread的构造函数?3. javascript - 读取页面源码,页面中所有的换行都被当成<br/>读取出来 了,,求解应该怎么让它被正确的解析4. java基础,求解答。5. javascript - 关于一段 for 循环代码执行顺序的问题6. html5 - 百度Ueditor代码高亮和代码段滚动条冲突是怎么回事?7. docker api 开发的端口怎么获取?8. javascript - 静态页面引公共头尾文件,js怎么写吖?9. debian - docker依赖的aufs-tools源码哪里可以找到啊?10. javascript - HTML 原生js怎么控制table根据0,1值来显示或者隐藏