WebDriver Eisimpleirean feitheamh soilleir, soilleir agus fileanta

Dè an diofar eadar feitheamh follaiseach, feitheamh follaiseach agus feitheamh fileanta ann an WebDriver? Gu sònraichte, dè an dàimh a tha eadar WebDriverWait agus FluentWait?

Seo eisimpleirean de bhith a ’cleachdadh gach dòigh feitheamh ann an WebDriver le Java.



Fuirich gu h-inntinneach

An feitheamh ri thuigsinn a bhith ag iarraidh air WebDriver bhòtadh an DOM airson ùine sònraichte nuair a tha iad a ’feuchainn ri eileamaid no eileamaidean a lorg mura h-eil iad rim faighinn sa bhad. Is e an suidheachadh bunaiteach 0. Aon uair 's gu bheil e air a shuidheachadh, tha am feitheamh so-thuigsinn air a shuidheachadh airson beatha eisimpleir nì WebDriver.


Eisimpleir de bhith a ’cleachdadh feitheamh so-thuigsinn

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'));

Cuin a bu chòir dhuinn feitheamh ri feitheamh?


Gu h-àbhaisteach, chan eilear a ’moladh feitheamh ri thuigsinn, nuair as urrainn dhuinn feitheamh soilleir no feitheamh fileanta a chleachdadh.



Fuirich gu sònraichte

An feitheamh gu follaiseach na chòd a tha thu a ’mìneachadh gus feitheamh ri suidheachadh sònraichte mus tachair thu nas fhaide air adhart sa chòd. Bidh WebDriverWait gu bunaiteach a ’gairm an ExpectedCondition a h-uile 500 millisecond gus an till e gu soirbheachail.

Eisimpleir de bhith a ’cleachdadh feitheamh sònraichte

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

Cuin a bu chòir dhuinn feitheamh sònraichte a chleachdadh?


Mar as trice bhiodh sinn a ’cleachdadh feitheamh sònraichte ma bheir eileamaid ùine mhòr airson luchdachadh. Chleachd sinn cuideachd feitheamh sònraichte gus sgrùdadh a dhèanamh air seilbh CSS de eileamaid (làthaireachd, cliocas. Msaa) a dh ’fhaodadh atharrachadh ann an tagraidhean Ajax.



Fuirich fileanta

Nuair a bhios tu a ’cleachdadh an eisimpleir FluentWait, is urrainn dhuinn sònrachadh:

  • An tricead leis am feum FluentWait sgrùdadh a dhèanamh air na cumhachan a tha air am mìneachadh.
  • Mothaich seòrsachan sònraichte eisgeachd a ’feitheamh leithid NoSuchElementExceptions fhad‘ s a tha thu a ’lorg eileamaid air an duilleag.
  • An ùine as motha airson feitheamh ri staid

Eisimpleir de bhith a ’cleachdadh 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')); } });

Cuin a bu chòir dhuinn FluentWait a chleachdadh?


Nuair a dh ’fheuchas tu ri deuchainn a dhèanamh air làthaireachd eileamaid a dh’ fhaodadh nochdadh às deidh gach x diog / mionaid.



Eadar-dhealachadh eadar WebDriverWait agus FluentWait

Tha WebDriverWait na fho-chlas de FluentWait. Ann am FluentWait tha barrachd roghainnean agad airson rèiteachadh, còmhla ris an ùine feitheamh as àirde, leithid àm bhòtaidh, eisgeachdan ri leigeil seachad msaa.

Mar sin, an àite feitheamh agus an uairsin a ’cleachdadh 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();

faodaidh sinn a chleachdadh:


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

Barrachd leughaidh: