Belirli bir dövləti gözləyərkən WebDriver veb səhifə yeniləmə

Testlər zamanı mən veb səhifəni yeniləşdirmək üçün daha zərif bir yol axtarıram (Selenium2 istifadə edirəm). Yalnız F5 düyməsini göndərirəm, amma sürücünün bütün veb səhifəsi üçün bir yeniləmə üsulu olub-olmadığını merak edirəm.

  while(driver.findElements(By.xpath("//*[text() = 'READY']")).size() == 0 ) driver.findElement(By.xpath("//body")).sendKeys(Keys.F5); //element appear after text READY is presented driver.findElement(By.cssSelector("div.column a")).click(); 

Yəqin ki, bu yenilənmiş bir səhifədə bir maddə üçün el ilə axtarış üçün ən yaxşı həlldir.

100
20 апр. abrasadera 20 apr qurmaq . 2012-04-20 14:48 '12 at 2:48 PM 2012-04-20 14:48
@ 12 cavab

Java və ya JavaScript-də:

 driver.navigate().refresh(); 

Bu səhifə yeniləyir.

201
21 апр. Manpreet Singh tərəfindən verilmiş cavab 21 Apr 2012-04-21 00:31 '12 at 0:31 2012-04-21 00:31

Python'da bunun üçün bir yol var: driver.refresh() . Bəlkə də bu Java-da eyni deyil.

border=0

Alternativ olaraq driver.get("http://foo.bar"); Baxmayaraq ki, yeniləmə üsulu yaxşı işləməlidir.

35
20 апр. cavab İshaqa verilir 20 Apr 2012-04-20 16:44 '12 at 4:44 pm 2012-04-20 16:44

Pythonda

Daxili metoddan istifadə

 driver.refresh() 

və ya javascripti icra etməklə

 driver.execute_script("location.reload()") 
20
Cavab Md verilir . 12 февр. Nazmul Haque Sarker 12 fevral 2014-02-12 14:37 '14 14:37 2014-02-12 14:37

Seleniumda tətbiqin yenilənməsi üçün müxtəlif yanaşmalar tapıldı: -

 1.driver.navigate().refresh(); 2.driver.get(driver.getCurrentUrl()); 3.driver.navigate().to(driver.getCurrentUrl()); 4.driver.findElement(By.id("Contact-us")).sendKeys(Keys.F5); 5.driver.executeScript("history.go(0)"); 

Canlı kod üçün linkə baxın http://www.ufthelp.com/2014/11/Methods-Browser-Refresh-Selenium.html

11
13 нояб. Cavab 13 AvqustRush tərəfindən verilir 2014-11-13 12:45 '14 saat 12:45 'də 2014-11-13 12:45

C # -in bir az fərqli versiyası:

 driver.Navigate().Refresh(); 
5
08 июля '15 в 17:30 2015-07-08 17:30 cavab iyul ayının 8-də saat 17: 30-da verilir

Selenium Webdriver istifadə edərək bir veb səhifə yeniləmək üçün 5 müxtəlif yolları

Xüsusi əlavə kodlaşdırma yoxdur. Mən mövcud işləmələri yalnız işləməyim üçün müxtəlif yollarla istifadə etdim. İşdə bunlar:

  • SendKey.Keys Metodundan istifadə

     driver.get("https://accounts.google.com/SignUp"); driver.findElement(By.id("firstname-placeholder")).sendKeys(Keys.F5); 
  • Navigate.refresh () metodundan istifadə

     driver.get("https://accounts.google.com/SignUp"); driver.navigate().refresh(); 
  • Navigate.to () metodundan istifadə

     driver.get("https://accounts.google.com/SignUp"); driver.navigate().to(driver.getCurrentUrl()); 
  • Get () metodundan istifadə

     driver.get("https://accounts.google.com/SignUp"); driver.get(driver.getCurrentUrl()); 
  • SendKeys () metodundan istifadə

     driver.get("https://accounts.google.com/SignUp"); driver.findElement(By.id("firstname-placeholder")).sendKeys("\uE035"); 
4
02 дек. Sandeep tərəfindən verilmiş cavab 02 Dek 2016-12-02 21:49 '16 at 21:49 2016-12-02 21:49

Yeniləmə Alternativi (F5)

 driver.navigate().refresh(); 

(və ya)

 Actions actions = new Actions(driver); actions.keyDown(Keys.CONTROL).sendKeys(Keys.F5).perform(); 
4
04 сент. Cavab Prashanth Sams tərəfindən verildi. 2013-09-04 15:39 '13 at 3:39 pm 2013-09-04 15:39

Siz də cəhd edə bilərsiniz

 Driver.Instance.Navigate().Refresh(); 
2
10 сент. Cavab 10 sentyabr İstifadəçi 5320606 tərəfindən verilir 2015-09-10 12:39 '15 'da 12:39' de, 2015-09-10 12:39

Cari səhifəni yeniləmək üçün başqa yol java istifadə selenium istifadə edir.

 //first: get the current URL in a String variable String currentURL = driver.getCurrentUrl(); //second: call the current URL driver.get(currentURL); 

Bu, mövcud səhifəni yeniləyir, məsələn brauzerin ünvan çubuğunu tıklayaraq daxil edin.

0
22 дек. Cavab Ryansky Heisenberg verildi 22 dekabr. 2016-12-22 09:01 '16 saat 09:01 'da 2016-12-22 09:01

Sürücü.navigate () çağırışını qeyd etmək vacibdir. Yenile () bəzən asynchronous görünür, yəni yeniləmənin tamamlanmasını gözləmir, sadəcə "təzələnməyə başlayır" və brauzer səhifəni yenidən yüklədikdə daha çox icraya mane olur.

Bu, yalnız daha az hallarda baş verir, baxmayaraq ki, səhifənin həqiqətən yenidən yükləndiyini yoxlamaq üçün bir əl yoxlaması əlavə edərək 100% işləməyinə əmin olmalıyıq.

Bunun üçün ana səhifə obyektimizdə yazdığım koddur:

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

Bəzi qeydlər:

  • Sayfayı yenidən yüklədiyiniz üçün, bu elementin mövcudluğunu yoxlamaq mümkün deyil, çünki element yenidən başlamadan əvvəl və yerinə yetirildikdən sonra orada olacaqdır. Buna görə bəzən həqiqəti əldə edə bilərsiniz, ancaq səhifə hətta yüklənmir.
  • Sayfada yeniden yüklendiğinde, WebElement.isDisplayed () kontrolü bir StaleElementReferenceException atar. Qalan bütün əsasları əhatə edir.
  • getName (): səhifə adını alan daxili metod
  • getMaximumLoadTime (): səhifə yüklənmə müddəti saniyədə dönən daxili metod
  • doğrulama (): daxili metod səhifənin həqiqətən yüklənməsini təmin edir.

Yenə də, vəziyyətlərin əksəriyyətində, do / while loop bir dəfə çalışır, çünki kodu naviqasiya () xaricindədir. brauzer həqiqətən səhifəni tamamilə yenidən yükləməyincə, yeniləmə () işləmir, lakin biz, həqiqətən, bu dövrü keçmək üçün bir neçə saniyə çəkdikdə, naviqasiya (). yeniləmə () brauzer yüklənmə tamamlanana qədər blok vermədi.

0
09 июня '16 в 23:33 2016-06-09 23:33 Cavab 09 iyun, saat 16: 33-da verilir. 2016-06-09 23:33

Bir səhifədə yalnız tam bir iframe və tam səhifə deyil, yeniləmək istədiyiniz halda da var.

Siz aşağıdakıları edərsiniz:

 public void refreshIFrameByJavaScriptExecutor(String iFrameId){ String script= "document.getElementById('" + iFrameId+ "').src = " + "document.getElementById('" + iFrameId+ "').src"; ((IJavaScriptExecutor)WebDriver).ExecuteScript(script); } 
0
30 июня '14 в 12:11 2014-06-30 12:11 Stas'a 30 İyun '14 'də saat 12:11' də cavab verildi 2014-06-30 12:11

PHP-də:

 $driver->navigate()->refresh(); 
-1
15 июня '16 в 19:07 2016-06-15 19:07 Cavab MegaCasper tərəfindən 15 iyun 'da saat 19:07' da veriləcək, 2016-06-15 19:07