የድረ-ድራይቨር ግልጽ ፣ ግልጽ እና ቅልጥፍና ይጠብቁ ምሳሌዎች

በግልፅ በመጠበቅ ፣ በግልጽ በመጠበቅ እና በድረ-ድራይቭ ውስጥ አቀላጥፎ በመጠበቅ መካከል ያለው ልዩነት ምንድነው? በይበልጥ በይበልጥ ፣ በዌብድራይቨርዌት እና በ FluentWait መካከል ያለው ግንኙነት ምንድነው?

እያንዳንዱን የጥበቃ ዘዴ ከጃቫ ጋር በዌብ ድራይቨር ውስጥ የመጠቀም ምሳሌዎች እነሆ።



በተዘዋዋሪ ይጠብቁ

አንድ በተዘዋዋሪ መጠበቅ ኤለመንቶችን ወይም ንጥረ ነገሮችን ወዲያውኑ ማግኘት ካልቻሉ DOM ን ለተወሰነ ጊዜ ድምጽ እንዲሰጥ ለድር ድራይቨር ለመንገር ነው ፡፡ ነባሪው ቅንብር 0. አንዴ ከተዋቀረ ፣ ግልጽ የሆነ ጥበቃ ለድር ድራይቨር የነገር ምሳሌ ሕይወት ተዘጋጅቷል።


ድብቅ ጥበቃን የመጠቀም ምሳሌ

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

ድብቅ ጥበቃዎችን መቼ መጠቀም አለብን?


በመደበኛነት ግልፅ ጥበቦችን ወይም ቅልጥፍናን መጠበቅ ስንችል ድብቅ መጠበቅን መጠቀም አይመከርም።



ግልፅ ይጠብቁ

አንድ ግልጽ መጠበቅ በኮዱ ውስጥ የበለጠ ከመቀጠልዎ በፊት አንድ የተወሰነ ሁኔታ እስኪከሰት ድረስ የሚጠብቁት ኮድ ነው ፡፡ WebDriverWait በነባሪነት በተሳካ ሁኔታ እስኪመለስ ድረስ በእያንዳንዱ 500 ሚሊሰከንዶች የተጠበቀውን ሁኔታ ይጠራል ፡፡

ግልጽ ጥበቃን የመጠቀም ምሳሌ

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

ግልፅ መጠባበቂያዎችን መቼ መጠቀም አለብን?


አንድ ኤለመንት ለመጫን ረጅም ጊዜ ከወሰደ እኛ በመደበኛነት ግልጽ ጥበቃን እንጠቀም ነበር። በአጃክስ አፕሊኬሽኖች ውስጥ ሊለወጥ የሚችል የአንድ አካል (ተገኝነት ፣ ጠቅ ማድረግ እና የመሳሰሉት) የሲ.ኤስ.ኤስ. ንብረትን ለመፈተሽም እንዲሁ በግልፅ ተጠቀመን ፡፡



አቀላጥፈው ይጠብቁ

የ FluentWait ን ምሳሌ ሲጠቀሙ መለየት እንችላለን:

  • የተገለጹትን ሁኔታዎች ለመፈተሽ FluentWait ያለው ድግግሞሽ።
  • በገጹ ላይ አንድ ኤለመንትን በሚፈልጉበት ጊዜ እንደ NoSuchElementExcepts ያሉ ልዩ የልዩነት አይነቶችን አይተው ችላ ይበሉ ፡፡
  • ሁኔታን ለመጠበቅ ከፍተኛው ጊዜ

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

FluentWait ን መቼ መጠቀም አለብን?


ከእያንዳንዱ x ሰከንድ / ደቂቃ በኋላ ሊታይ የሚችል ንጥረ ነገር መኖሩን ለመሞከር ሲሞክሩ ፡፡



በ WebDriverWait እና በ FluentWait መካከል ያለው ልዩነት

WebDriverWait የ FluentWait ንዑስ ክፍል ነው። በ FluentWait ውስጥ እንደ የምርጫ ልዩነት ፣ ችላ ለማለት የማይካተቱ ጉዳዮች ካሉ ከፍተኛ የጥበቃ ጊዜ ጋር ለማዋቀር ተጨማሪ አማራጮች አሉዎት ፡፡

ስለዚህ ፣ ከመጠበቅ እና ከዚያ ከመጠቀም ይልቅ 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();

እኛ መጠቀም እንችላለን


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

ተጨማሪ ንባብ: