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. css - 求推薦幾款好用的移動端頁面布局調試工具呢?2. javascript - 百度echarts series數據更新問題3. css3 - 手機網頁中用css寫1px的描邊,為什么需要加一句overflow:hidden才能真正顯示1px?4. php - 第三方支付平臺在很短時間內多次異步通知,訂單多次確認收款5. Mysql && Redis 并發問題6. javascript - node服務端渲染的困惑7. css3 - css before 中文亂碼?8. mysql - 一個表和多個表是多對多的關系,該怎么設計9. python - type函數問題10. mysql新建字段時 timestamp NOT NULL DEFAULT ’0000-00-00 00:00:00’ 報錯
