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. vim - docker中新的ubuntu12.04镜像,运行vi提示,找不到命名.2. node.js - express框架,设置浏览器从缓存中读取静态文件,只有js从缓存中读取了,css还有一些图片为何没有从缓存中读取?3. docker镜像push报错4. javascript - 如何获取未来元素的父元素在页面中所有相同元素中是第几个?5. java - web端百度网盘的一个操作为什么要分两次请求服务器, 有什么好处吗6. docker - 如何修改运行中容器的配置7. docker安装后出现Cannot connect to the Docker daemon.8. docker start -a dockername 老是卡住,什么情况?9. java - 如何点击按钮,重新运行(我是初学者)?10. java - Spring boot 读取 放在 jar 包外的,log4j 配置文件,系统有创建日志文件,不写入日志信息。

网公网安备