IWebDriver ngokungacacanga, Imizekelo yokuCacisa kunye nokuTyibilika

Nguwuphi umahluko phakathi kokulinda ngokungagungqiyo, ukulinda ngokucacileyo kunye nokulinda ngokutyibilikayo kwiWebDriver? Ngokukodwa, yintoni ubudlelwane phakathi kweWebDriverWait kunye neFluentWait?

Nayi imizekelo yokusebenzisa indlela nganye yokulinda kwiWebDriver ngeJava.



Linda ngokungagungqiyo

An linda ngokungagungqiyo kukuxelela iWebDriver ukuba ivote i-DOM kangangexesha elithile xa izama ukufumana into okanye izinto ukuba azifumaneki kwangoko. Ukuseta okungagqibekanga ngu-0 Nje ukuba kusetiwe, ukulinda okungagungqiyo kusetelwe ubomi bento yeWebDriver.


Umzekelo wokusebenzisa ngokungagungqiyo ukulinda

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

Kufuneka sisebenzise nini ukulinda ngokungagungqiyo?


Ngokwesiqhelo, akucetyiswa ukuba usebenzise ulindelo olungacacanga, xa sinokusebenzisa ukulinda okucacileyo okanye ukulinda ngokutyibilikayo.





Lindela ngokucacileyo

An ukulinda okucacileyo yikhowudi oyichazayo ukulinda imeko ethile ukuba yenzeke ngaphambi kokuba uqhubeke phambili kwikhowudi. IWebDriverLinda ngokungagqibekanga ibize imeko ekuLindelweyo rhoqo kwii-millisecond ezingama-500 ide ibuye ngempumelelo.

Umzekelo wokusebenzisa ngokucacileyo ukulinda

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

Kufuneka sikusebenzise nini ukulinda okucacileyo?


Sihlala sisebenzisa ukulinda okucacileyo ukuba into ithatha ixesha elide ukuyilayisha. Sikwasebenzise ukulinda okucacileyo ukujonga ipropathi yeCSS yento (ubukho, ukucofa, njl.njl.) Ezinokutshintsha kwizicelo zeAjax.



Ukutyibilika kokulinda

Xa usebenzisa umzekelo weFluentWait, singachaza:

  • Ukuhamba rhoqo apho iFluentWait kufuneka ijonge iimeko ezichaziweyo.
  • Ungayihoyi iindidi ezithile zokuma ngaphandle kokulinda njengeNoSuchElementExceptions ngelixa ujonga into kwiphepha.
  • Elona xesha liphezulu lokulinda imeko

Umzekelo wokusebenzisa iFluentWait

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

Sifanele siyisebenzise nini iFluentWait?


Xa uzama ukuvavanya ubukho bento enokuthi ivele emva kwemizuzwana ye-x / imizuzu.



Umahluko phakathi kweWebDriverWait kunye neFluentWait

IWebDriverWait sisiqwengana seFluentWait. KwiFluentWait unokhetho oluninzi lokumisela, kunye nexesha lokulinda, njengexesha lokuvota, ngaphandle kokungahoyi njl.

Ke, endaweni yokulinda emva koko usebenzise 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();

singasebenzisa:


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

Ukuqhubeka kokufunda: