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. mysql - JAVA怎么实现一个DAO同时实现查询两个实体类的结果集2. sql语句 - 如何在mysql中批量添加用户?3. mysql建表报错,查手册看不懂,求解?4. PHP类属性声明?5. 求大神支招,php怎么操作在一个html文件的<head>标记内添加内容?6. 怎么php怎么通过数组显示sql查询结果呢,查询结果有多条,如图。7. 致命错误: Class ’appfacadeTest’ not found8. 老师们php,插入数据库mysql,都是空的,要怎么解决9. mysql - 数据库建字段,默认值空和empty string有什么区别 11010. phpstady在win10上运行
