Kodi pali kusiyana kotani pakati pa kudikirira kwathunthu, kudikira kotsimikizika ndi kuyembekezera bwino mu WebDriver? Makamaka, pali ubale wotani pakati pa WebDriverWait ndi FluentWait?
Nazi zitsanzo za kugwiritsa ntchito njira iliyonse yodikira mu WebDriver ndi Java.
An kudikira kotheratu ndikuuza WebDriver kuti afufuze DOM kwakanthawi kochepa poyesa kupeza chinthu kapena zinthu ngati sizikupezeka msanga. Makonda osakhazikika ndi 0. Akangokhazikitsidwa, kudikirira kwathunthu kumayikidwa pamoyo wa chinthu cha WebDriver.
Chitsanzo chogwiritsa ntchito kudikira kwathunthu
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'));
Kodi tiyenera kugwiritsa ntchito nthawi iti kudikira?
Nthawi zambiri, sizoyenera kugwiritsa ntchito kudikirira kwathunthu, pomwe tingagwiritse ntchito kudikirira momveka bwino kapena kuyembekezera bwino.
An kudikira kotheratu ndi code yomwe mumatanthauzira kudikirira kuti zinthu zina zichitike musanapitilize pa code. WebDriverIyembekezerani mwachisawawa imayitanitsa ExpectCondition pama milliseconds 500 aliwonse mpaka ibwerere bwino.
Chitsanzo chogwiritsa ntchito kudikirira
WebDriver driver = new FirefoxDriver(); driver.get('http://somedomain/someurl'); WebElement dynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id('dynamicElement')));
Kodi tiyenera kugwiritsa ntchito nthawi yanji kudikira?
Titha kugwiritsa ntchito kudikira kotsimikizika ngati chinthu chimatenga nthawi yayitali kutsegula. Tidagwiritsanso ntchito kudikira kotsimikizika kuti tione ngati CSS ili ndi chinthu china (kupezeka, kudina, ndi zina zambiri) chomwe chingasinthe mu ntchito za Ajax.
Mukamagwiritsa ntchito FluentWait Mwachitsanzo, titha kunena:
Chitsanzo chogwiritsa ntchito 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')); } });
Kodi tiyenera kugwiritsa ntchito liti FluentWait?
Mukayesa kuyesa kupezeka kwa chinthu chomwe chitha kuoneka pambuyo pa masekondi / mphindi iliyonse.
WebDriverWait ndi gulu laling'ono la FluentWait. Mu FluentWait muli ndi zina zomwe mungasankhe, limodzi ndi nthawi yayitali yodikirira, monga nthawi yovota, kupatula kunyalanyaza zina.
Chifukwa chake, m'malo modikirira kenako ndikugwiritsa ntchito 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();
titha kugwiritsa ntchito:
WebElement element = wait.until(
ExpectedConditions.elementToBeClickable(By.linkText('Account')));
Kuwerenga kwina: