Afiwe WebDriver Ni Ifarahan, Ti o han gbangba ati Fifihan Duro

Kini iyatọ laarin iduro iduro, iduro didan ati iduro diduro ni WebDriver? Ni pataki diẹ sii, kini ibatan laarin WebDriverWait ati FluentWait?

Eyi ni awọn apẹẹrẹ ti lilo ọna iduro kọọkan ni WebDriver pẹlu Java.



Duro Duro Lọna

An airotẹlẹ duro ni lati sọ fun WebDriver lati ṣe ibo DOM fun iye akoko kan nigbati o n gbiyanju lati wa eroja kan tabi awọn eroja ti wọn ko ba wa lẹsẹkẹsẹ. Eto aiyipada jẹ 0. Ni kete ti a ṣeto, a ti ṣeto idaduro ti o han fun igbesi aye ti apẹẹrẹ ohun WebDriver.


Apẹẹrẹ ti lilo iduro ailopin

WebDriver driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.get('http://somedomain/slow_loading_url'); WebElement dynamicElement = driver.findElement(By.id('dynamicElement'));

Nigba wo ni o yẹ ki a lo awọn iduro ti ko ye?


Ni deede, a ko ṣe iṣeduro lati lo awọn iduro ṣinṣin, nigba ti a le lo awọn iduro ti o fojuhan tabi awọn iduro pipe.



Duro ti o fojuhan

An iduro diduro jẹ koodu ti o ṣalaye lati duro de ipo kan lati ṣẹlẹ ṣaaju titẹsiwaju ninu koodu naa. WebDriverWit nipasẹ awọn ipe aiyipada Awọn Ipaba Ireti ni gbogbo awọn milliseconds 500 titi o fi pada de ni aṣeyọri.

Apẹẹrẹ ti lilo iduro ti o fojuhan

WebDriver driver = new FirefoxDriver(); driver.get('http://somedomain/someurl'); WebElement dynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id('dynamicElement')));

Nigba wo ni o yẹ ki a lo awọn iduro ti o han gbangba?


A yoo lo deede iduro ti o han gbangba ti nkan kan ba gba akoko pipẹ lati fifuye. A tun lo iduro ti o han gbangba lati ṣayẹwo ohun-ini CSS ti eroja kan (niwaju, tẹẹrẹ ati bẹbẹ lọ) eyiti o le yipada ninu awọn ohun elo Ajax



Duro Fluent

Nigba lilo apẹẹrẹ FluentWait, a le ṣe pato:

  • Iwọn igbohunsafẹfẹ pẹlu eyiti FluentWait ni lati ṣayẹwo awọn ipo ti a ṣalaye.
  • Foju awọn iru pato ti idaduro iyasilẹ bii NoSuchElementExcepts lakoko wiwa nkan kan loju iwe naa.
  • Iye akoko ti o pọ julọ lati duro de ipo kan

Apẹẹrẹ ti lilo FluentWait

// Waiting 30 seconds for an element to be present on the page, checking // for its presence once every 5 seconds. Wait wait = new FluentWait(driver)
.withTimeout(30, SECONDS)
.pollingEvery(5, SECONDS)
.ignoring(NoSuchElementException.class); WebElement foo = wait.until(new Function() {
public WebElement apply(WebDriver driver) {
return driver.findElement(By.id('foo')); } });

Nigbawo ni o yẹ ki a lo FluentWait?


Nigbati o ba gbiyanju lati ṣe idanwo niwaju eroja ti o le han lẹhin gbogbo iṣẹju-aaya x / iṣẹju.



Iyato Laarin WebDriverWait ati FluentWait

WebDriverWait jẹ ipin-kekere ti FluentWait. Ni FluentWait o ni awọn aṣayan diẹ sii lati tunto, pẹlu akoko idaduro ti o pọ julọ, bii aarin ibo, awọn imukuro lati foju ati bẹbẹ lọ.

Nitorinaa, dipo iduro ati lẹhinna lilo findElement:

WebDriverWait wait = new WebDriverWait(driver, 18); wait.until(ExpectedConditions.elementToBeClickable(By.linkText('Account'))); WebElement element = driver.findElement(By.linkText('Account')); element.sendKeys(Keys.CONTROL); element.click();

a le lo:


WebElement element = wait.until(
ExpectedConditions.elementToBeClickable(By.linkText('Account')));

Siwaju sii kika: