একটি গুরুত্বপূর্ণ বিষয় লক্ষণীয় হ'ল ড্রাইভার.নভিগেট ()। রিফ্রেশ () কলটি মাঝে মাঝে অ্যাসিনক্রোনাস মনে হয়, যার অর্থ এটি রিফ্রেশটি শেষ হওয়ার অপেক্ষা করে না, এটি কেবল "রিফ্রেশটি বন্ধ করে" এবং আরও কার্যকরকরণ অবরুদ্ধ করে না doesn't ব্রাউজারটি পৃষ্ঠাটি পুনরায় লোড করার সময়।
যদিও এটি কেবলমাত্র একটি সংখ্যালঘু ক্ষেত্রেই ঘটবে বলে মনে হচ্ছে, আমরা অনুভব করেছি যে পৃষ্ঠাটি সত্যই পুনরায় লোড করা শুরু হয়েছে কিনা তা একটি ম্যানুয়াল চেক যোগ করে এটি 100% কাজ করে তা নিশ্চিত করা আরও ভাল।
আমাদের বেস পৃষ্ঠা অবজেক্ট শ্রেণিতে তার জন্য আমি যে কোডটি লিখেছি তা এখানে:
public void reload() {
// remember reference to current html root element
final WebElement htmlRoot = getDriver().findElement(By.tagName("html"));
// the refresh seems to sometimes be asynchronous, so this sometimes just kicks off the refresh,
// but doesn't actually wait for the fresh to finish
getDriver().navigate().refresh();
// verify page started reloading by checking that the html root is not present anymore
final long startTime = System.currentTimeMillis();
final long maxLoadTime = TimeUnit.SECONDS.toMillis(getMaximumLoadTime());
boolean startedReloading = false;
do {
try {
startedReloading = !htmlRoot.isDisplayed();
} catch (ElementNotVisibleException | StaleElementReferenceException ex) {
startedReloading = true;
}
} while (!startedReloading && (System.currentTimeMillis() - startTime < maxLoadTime));
if (!startedReloading) {
throw new IllegalStateException("Page " + getName() + " did not start reloading in " + maxLoadTime + "ms");
}
// verify page finished reloading
verify();
}
কিছু নোট:
- যেহেতু আপনি পৃষ্ঠাটি পুনরায় লোড করছেন, আপনি কেবলমাত্র একটি নির্দিষ্ট উপাদানটির অস্তিত্ব পরীক্ষা করতে পারবেন না, কারণ পুনরায় লোড শুরুর আগে এবং এটি সম্পন্ন হওয়ার পরে উপাদানটি উপস্থিত থাকবে। তাই কখনও কখনও আপনি সত্য হয়ে উঠতে পারেন তবে পৃষ্ঠাটি এখনও লোড হওয়া শুরু করে নি।
- পৃষ্ঠাটি পুনরায় লোড হয়ে গেলে, WebElement.isDisplayed () পরীক্ষা করা একটি স্টাইলিলেমেন্টরিফারেন্স এক্সেক্সশন ফেলে দেবে। বাকিটি কেবল সমস্ত ঘাঁটি coverাকা দেওয়ার জন্য
- getName (): অভ্যন্তরীণ পদ্ধতি যা পৃষ্ঠার নাম পায়
- getMaximumLoadTime (): অভ্যন্তরীণ পদ্ধতি যা কতক্ষণ পৃষ্ঠা সেকেন্ডে লোড করার অনুমতি দেওয়া উচিত তা দেয়
- যাচাই করুন (): অভ্যন্তরীণ পদ্ধতিটি নিশ্চিত করে যে পৃষ্ঠাটি আসলে লোড হয়েছে
আবার, বেশিরভাগ ক্ষেত্রে, ডু / উইন্ড লুপটি একবারে চালায় কারণ নেভিগেটের বাইরে কোড () রিফ্রেশ করুন () ব্রাউজারটি পৃষ্ঠাটি সম্পূর্ণরূপে পুনরায় লোড না করা পর্যন্ত কার্যকর করা হয় না, তবে আমরা কেসগুলি দেখেছি যেখানে আসলে এই লুপটি পেতে কয়েক সেকেন্ড সময় লাগে কারণ নেভিগেট () ref