top 10 selenium exceptions
Özel Durum İşleme Çerçevesini Kullanarak Selenium WebDriver İstisnalarını İşleme - Selenium Eğitimi # 19
Otomasyon kodunda bir istisna almak çok yaygındır. Kelimenin de belirttiği gibi 'istisna', özel veya nadir görülen bir durumdur.
Otomasyon kodu yürütme, genellikle ağ kararlılığı sorunları, İnternet sorunları, sunucu kararlılığı vb. Gibi yürütmeyle ilgili birçok faktör nedeniyle beklendiği gibi gerçekleştirilemeyebilir. Yetersiz bekleme süresi veya yanlış sözdizimleri, parametreler vb. Nedeniyle istisnalar alabiliriz.
Son WebDriver eğitiminde, 3 farklı türde önemli web öğesi öğrendik. Web Tabloları, Çerçeveler ve Dinamik öğeler ve selenyum betiğinde işleme mekanizmaları
Bu konudaki Çerçeve eğitimlerine geçmeden önce Selenyum eğitimi serisi, burada bu eğiticide hakkında bilgi edineceğiz istisna türleri ve Java ve Selenium komut dosyalarındaki istisnaların nasıl ele alınacağı . Geliştiriciler / testçiler, selenyum komut dosyalarındaki bir istisnayı işlemek için istisna işleme çerçevesini kullanır.
Ne öğreneceksin:
- İstisna nedir?
- Avoid-Hand yaklaşımının avantajları ve dezavantajları
- Java ve Selenium'da İstisna Türleri
- İstisna işleme
- Selenium WebDriver'da Genel İstisnalar
- Yaygın İstisnaları Önleme ve Ele Alma
- # 1) org.openqa.selenium.NoSuchElementException
- # 2) org.openqa.selenium.NoSuchWindowException
- # 3) org.openqa.selenium.NoSuchFrameException
- # 4) org.openqa.selenium.NoAlertPresentException
- # 5) org.openqa.selenium.InvalidSelectorException
- # 6) org.openqa.selenium.ElementNotVisibleException
- # 7) org.openqa.selenium.ElementNotSelectableException
- # 8) org.openqa.selenium.TimeoutException
- # 9) org.openqa.selenium.NoSuchSessionException
- # 10) org.openqa.selenium.StaleElementReferenceException
- Sonuç
- Önerilen Kaynaklar
İstisna nedir?
İstisnalar, java programının beklenen çıktıyı vermeden aniden sona erdiği olaylardır. Java, bir kullanıcının istisnaları işleyebileceği bir çerçeve sağlar.
İstisnaları işleme sürecine İstisna İşleme denir.
İstisnalar, bir programın normal yürütme akışını bozdukları için ele alınmalıdır. İstisna işlemenin önemli amaçlarından biri, bu kesintiyi önlemek ve programı yürütmeye devam etmektir. Bazen, belirli bir istisna meydana geldiğinde bazı eylemler gerçekleştirmek isteyebilirsiniz.
Bir istisna meydana geldiğinde, teknik olarak '' olarak adlandırılan bir istisna nesnesi oluşturulur. Bir İstisna Oluşturmak ' ve ekliyoruz Dene / Yakala gibi bloklar,
try { // Protected code } catch (ExceptionName e) { // Catch block }
# 1) Bir istisna atabilecek kod parçası Try bloğunun içine eklenir.
#iki) Catch ifadesi istisnayı yakalar ve bunu bir parametre olarak alır.
# 3) Hiçbir istisna atılmadığında, catch deyimi değil try deyimi çalıştırılır.
Misal : Yanlış konum belirleyici nedeniyle selenyum betiği başarısız olduğunda, geliştirici başarısızlığın nedenini anlayabilmelidir ve bu, istisna programda düzgün bir şekilde ele alınırsa kolayca başarılabilir.
Tecrübelerime göre, mümkün olduğunda WebDriver istisnalarından kaçınmaya çalışmak ve gerçekten istisnai durumları yakalamak en iyisidir. Yanlış giden ve benim kontrolüm dışında kalan şeyleri halletmek için dene / yakala özelliğini kullanın.
Başkalarını yakalayabileceklerimden kaçının!
Bu benim için işe yarayan en iyi strateji.
Örneğin, Bir test sunucusuna yüklenmesi normalden daha uzun süren bir test sayfası düşünün. Bu sayfada işlem yaparken sık sık istisnalar alacağız. Yani, bunu her seferinde yakalamak yerine
- Bir bekleme komutu ekleyin ve bir istisnadan kaçınmaya çalışın
- Gerçekten istisnai bir durumun meydana gelmesi durumunda işlemek için 'Dene / Yakala' seçeneğini kullanın
Böylelikle istisna şansı azalır.
Avoid-Hand yaklaşımının avantajları ve dezavantajları
Avantajları | Dezavantajları |
---|---|
1) Bu yaklaşım, istisna alma olasılığını azaltır. | 1) İstisnaları önlemek için fazladan kod eklediğiniz için kod satırlarını artırır |
Hala bir istisna yakalanırsa, 2) kontrol etmeye değer gerçekten istisnai bir durum olur | 2) Web Sürücüsü API'sini, komutlarını ve istisnalarını daha iyi anlamalı |
Hata ayıklama süresini azaltın. Otomasyon kodu, hataları bulmaya yöneliktir ve çok fazla istenmeyen istisna görmek istemezsiniz 3) ve her birinin arkasındaki nedenleri bulmak | |
4) Catch bloğunda, daha geçerli vakalarla ilgilenirsiniz | |
5) Yanlış hataları azaltın | |
6) Daha net rapor |
Bu eğitimde tartışacağız Kaçın ve Tutun Selenium WebDriver'daki en yaygın 10 istisna için yaklaşım. Bundan önce, İstisna İşleme ve Try / Catch blokları hakkında temel bir anlayışa sahip olalım.
Java ve Selenium'da İstisna Türleri
Aşağıda, istisna türlerini ve selenyum komut dosyalarında istisna işleme çerçevesini nasıl kullanabileceğimizin farklı yollarını açıkladık.
Üç tür istisna vardır:
- Kontrol Edilen İstisna
- Kontrol Edilmemiş İstisna
- Hata
İstisna ve hata sınıf hiyerarşisi:
# 1) Kontrol Edilen İstisna: Kontrol edilen istisna, derleme sırasında ele alınır ve derleme sırasında yakalanmaz ve işlenmezse derleme hatası verir.
Misal : FileNotFoundException , IOException vb.
# 2) Kontrol Edilmemiş İstisna: Denetlenmemiş istisna durumunda, bir derleyici işlemeyi zorunlu kılmaz. Derleyici, derleme sırasında yok sayar.
Misal : ArrayIndexoutOfBoundException
# 3) Hata: Bir senaryo önemli olduğunda ve program kurtarılamadığında JVM bir hata atar. Hatalar, try-catch bloğu tarafından işlenemez. Kullanıcı, Try catch bloğunu kullanarak hatayı işlemeye çalışsa bile, hatayı düzeltemez.
Misal : Onaylama hatası , OutOfMemoryError vb.
İstisna işleme
Deneyin ve Yakala bloğu:
dene-yakala bloklar genellikle istisnaları işlemek için kullanılır. İstisna türleri gelmesi beklenen catch bloğunda bildirilir. Try bloğuna bir istisna geldiğinde, kontrol bloğu yakalamak için hemen hareket eder.
Misal :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); }
İstisna türüne bağlı olarak bir deneme bloğu için birden fazla yakalama bloğu olabilir.
Misal :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); } catch(FileNotFoundException file){ file.printStackTrace(); }
atar İstisna:
atar Java'da anahtar kelime, onu ele almak yerine bir istisna atmak için kullanılır. Kontrol edilen tüm istisnalar yöntemlerle atılabilir.
örnekle yazılım testinde test senaryoları nasıl yazılır
Misal :
public static void main(String() args) throws IOException { BufferedReader br=new BufferedReader(new FileReader('Data')); while ((line = br.readLine()) != null) { System.out.println(line); } }
en sonunda blok:
en sonunda blok, try-catch bloğunun yürütülmesine bakılmaksızın yürütülür ve try / catch bloğu tamamlandıktan hemen sonra yürütülür.
Temelde dosya kapatma, veritabanı bağlantısı vb. Son blokta kapatılabilir.
Misal :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); } Finally { br.close(); }
Yukarıdaki örnekte, BufferReader akış nihayet blokta kapatılır. br.close () try ve catch bloğunun yürütülmesine bakılmaksızın her zaman çalışır.
Not : nihayet blok, herhangi bir catch bloğu olmadan var olabilir. Her zaman bir catch bloğuna sahip olmak gerekli değildir.
Birçok catch bloğu olabilir, ancak yalnızca bir nihai blok kullanılabilir.
Atılabilir : Throwable, hata ve istisna için bir üst sınıftır. Genellikle, java'daki hataları işlemek zordur. Bir programcı hata ve istisna türünden emin değilse, hem hatayı hem de istisnayı yakalayabilen Throwable sınıfını kullanması önerilir.
Misal :
try { br = new BufferedReader(new FileReader('Data')); } catch (Throwable t) { t.printStackTrace(); }
Selenium WebDriver'da Genel İstisnalar
Selenium'un kendi istisnaları vardır. Selenyum komut dosyalarını geliştirirken, bir programcının bu istisnaları halletmesi veya atması gerekir.
Aşağıda selenyumdaki birkaç istisna örneği verilmiştir:
Selenium WebDriver'daki tüm çalışma zamanı istisna sınıfları, üst sınıf WebDriverException altında gelir.
WebDriverException altında birçok İstisna sınıfı olsa da, genellikle aşağıdakileri görüyoruz.
- NoSuchElementException
- NoSuchWindowException
- NoSuchFrameException
- NoAlertPresentException
- InvalidSelectorException
- ElementNotVisibleException
- ElementNotSelectableException
- Zaman Aşımı İstisnası
- NoSuchSessionException
- StaleElementReferenceException
Detaylar :
ElementNotVisibleException : Selenyum bir öğe bulmaya çalışırsa ancak öğe sayfada görünmüyorsa
NoAlertPresentException : Bir kullanıcı bir uyarı kutusunu işlemeye çalışırsa ancak uyarı mevcut değilse.
NoSuchAttributeException : Özellik değerini almaya çalışırken, ancak özellik DOM'da mevcut değil.
NoSuchElementException : Bu istisna, sayfada bulunmayan bir öğeye erişimden kaynaklanmaktadır.
WebDriverException : Bir kod WebDriver'ı başlatamadığında istisna oluşur.
Yaygın İstisnaları Önleme ve Ele Alma
Yukarıda belirtilen istisnalar için Kaçın ve Tut yaklaşımını tartışalım:
# 1) org.openqa.selenium.NoSuchElementException
Bu yaygın olarak görülen istisna sınıfı, bir alt sınıfıdır NotFoundException sınıf. İstisna, WebDriver öğeleri bulamadığında ve bulamadığında ortaya çıkar.
Genellikle bu, test cihazı findElement (By, by) yönteminde yanlış öğe bulucu yazdığında meydana gelir.
Aşağıdaki örnekte, metin alanı için doğru kimliğin 'birinci alan' olduğunu, ancak test edenin yanlış bir şekilde 'fistfield' olarak bahsettiğini düşünün. Bu durumda WebDriver, öğeyi bulamaz ve org.openqa.selenium.NoSuchElementException fırlatılacak
driver.findElement(By.id('submit')).click(); Exception Handling: try { driver.findElement(By.id('submit')).click(); } catch (NoSuchElementException e)
Bu durumda, eleman yüklenmemiş olsa bile istisna atılır.
Kaçınma ve Taşıma : Bekle komutu vermeyi deneyin.
Misal: Aşağıdaki bekleme komutu, 'gönder' kimliğine sahip web öğesinin varlığı için 10 saniye bekler. Daha sonra tıklamaya çalışır. Öğe mevcutsa, ancak yine de tıklama başarısız olursa, bir istisna yakalanır.
Gecikmeli sürenin kullanılması, test otomasyonunda adımlar arasında bir duraklama oluşturmak için yaygın bir uygulamadır. Bir Try / Catch ekleyerek, bekleme yardımcı olmasa bile programın devam etmesini sağlıyoruz.
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.presenceOfElementLocated(By.id('submit'))); try { driver.findElement(By.id('submit')).click(); } catch (WebDriverException e) { System.out.println(“An exceptional case.”); } } catch (TimeOutException e) { System.out.println(“WebDriver couldn’t locate the element”); }
# 2) org.openqa.selenium.NoSuchWindowException
NoSuchWindowException altına gelir NotFoundException sınıf. Bu, WebDriver geçersiz bir pencereye geçmeye çalıştığında atılır.
Pencere tutamacı yoksa veya geçiş için uygun değilse aşağıdaki kod org.openqa.selenium.NoSuchWindowException atabilir.
driver.switchTo (). pencere (handle_1);
Kaçınma ve Taşıma : Etkin pencere kümesini elde etmek için pencere tutamaçlarını kullanır ve ardından aynı eylemleri gerçekleştirirdik.
Aşağıdaki örnekte, her bir pencere kolu için, sürücü geçişi gerçekleştirilir. Bu nedenle, yanlış bir pencere parametresini geçme şansı azalır.
for (String handle : driver.getWindowHandles()) { try { driver.switchTo().window(handle); } catch (NoSuchWindowException e) { System.out.println(“An exceptional case”); } }
# 3) org.openqa.selenium.NoSuchFrameException
WebDriver geçersiz bir çerçeveye geçmeye çalışırken, NotFoundException sınıfı altında NoSuchFrameException atılır.
Bir çerçeve “frame_11” yoksa veya mevcut değilse, aşağıdaki kod org.openqa.selenium.NoSuchFrameException atabilir.
driver.switchTo (). çerçeve ('çerçeve_11');
İstisna işleme:
try { driver.switchTo().frame('frame_11'); } catch (NoSuchFrameException e)
Bu durumda, çerçeve yüklenmemiş olsa bile istisna atılır.
Kaçınma ve Taşıma : Bekle komutu vermeye çalışın.
Aşağıdaki örnekte, WebDriver çerçevenin kullanılabilir olması için 10 saniye bekler. Çerçeve mevcutsa ve hala bir istisna varsa, yakalanır.
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.frameToBeAvaliableAndSwitchToIt(frame_11)); try { driver.switchTo().frame('frame_11'); } catch (WebDriverException e) { System.out.println(“An exceptional case”); } } catch (TimeOutException e) { System.out.println(“WebDriver couldn’t locate the frame”); }
# 4) org.openqa.selenium.NoAlertPresentException
NoAlertPresentException altında NotFoundException WebDriver, kullanılamayan bir uyarıya geçmeye çalıştığında atılır.
org.openqa.selenium.NoAlertPresentException aşağıdaki otomasyon kodu çağrıları atılırsa, ekranda henüz bir uyarı olmadığında Alert () sınıfında kabul () işlemini çağırır.
driver.switchTo (). alert (). accept ();
İstisna işleme:
try { driver.switchTo().alert().accept(); } catch (NoSuchAlertException e)
Bu durumda, uyarı tamamen yüklenmemiş olsa bile istisna atılır.
Kaçınma ve Taşıma : Bir uyarının beklendiği tüm durumlarda, her zaman belirli bir süre için açık veya akıcı bir şekilde bekleyin. Uyarı mevcutsa ve hala bir istisna varsa, o zaman yakalanır.
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.alertIsPresent()); try { driver.switchTo().alert().accept(); } catch (NoAlertPresentException e) { System.out.println(“An exceptional case”); } } catch (TimeOutException e) System.out.println(“WebDriver couldn’t locate the Alert”); }
# 5) org.openqa.selenium.InvalidSelectorException
Bu alt sınıf NoSuchElementException sınıf, bir seçici yanlış veya sözdizimsel olarak geçersiz olduğunda oluşur. Bu istisna genellikle XPATH bulucu kullanıldığında ortaya çıkar.
Aşağıdaki örneği düşünün:
clickXPathButtonAndWait (“// button (@ type =’ button ’) (100)”);
Bu, XPATH sözdizimi yanlış olduğundan bir InvalidSelectorExeption atar.
Kaçınma ve Taşıma : Bundan kaçınmak için, kullanılan yer belirleyiciyi kontrol etmeliyiz çünkü yer bulucu muhtemelen yanlış veya sözdizimi yanlış. Xpath'i bulmak için Firebug kullanmak bu istisnayı azaltabilir.
Aşağıdaki kod, Try / Catch kullanılarak nasıl işleneceğini gösterir
try { clickXPathButtonAndWait('//button(@type='button')'); } catch (InvalidSelectorException e) { }
# 6) org.openqa.selenium.ElementNotVisibleException
ElementNotVisibleException sınıf bir alt sınıfıdır ElementNotInteractableException sınıf. Bu istisna, WebDriver etkileşime giremeyen görünmez bir web öğesi üzerinde bir eylem gerçekleştirmeye çalıştığında atılır. Yani, web öğesi gizli bir durumdadır.
Örneğin, Aşağıdaki kodda, 'gönder' kimliğine sahip düğme türü HTML'de 'gizli' ise, org.openqa.selenium.ElementNotVisibleException fırlatılacak.
driver.findElement(By.id('submit')).click(); Exception Handling: try { driver.findElement(By.id('submit')).click(); } catch (ElementNotVisibleException e)
Bu durumda, sayfa tamamen yüklenmemiş olsa bile istisna atılır.
Kaçınma ve Taşıma : Bunu yapmanın iki yolu vardır. Elemanın tamamen alması için bekle seçeneğini kullanabiliriz.
Aşağıdaki kod, eleman için 10 saniye beklemektedir. Öğe görünür durumdaysa ve yine de istisna atılmışsa, yakalanır.
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.visibilityOfElementLocated(By.id(”submit”)); try { driver.findElement(By.id('submit')).click(); } catch (WebDriverException e) { System.out.println(“Exceptional case”); } } catch (TimeOutException e) System.out.println(“WebDriver couldn’t find this element visible”); }
# 7) org.openqa.selenium.ElementNotSelectableException
Bu istisna altında geliyor InvalidElementStateException sınıf . ElementNotSelectableException web öğesinin web sayfasında bulunduğunu ancak seçilemeyeceğini gösterir.
Örneğin, 'swift' kimliği devre dışı bırakılırsa aşağıdaki kod bir ElementNotSelectableException oluşturabilir.
Açılır listeyi seçin = new Select (driver.findElement (By.id ('swift')));
İstisna işleme:
Deneyin {
Açılır listeyi seçin = new Select (driver.findElement (By.id ('swift')));
} catch (ElementNotSelectableException e)
Bu durumda, öğe bir süre sonra etkinleştirilse bile istisna atılır.
Kaçınma ve Taşıma : Eleman tıklanabilir hale gelene kadar beklemek için bir bekleme komutu ekleyebiliriz. Hala bir istisna varsa, yakalanır.
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions. elementToBeClickable(By.id(”swift”)); try { Select dropdown = new Select(driver.findElement(By.id('swift'))); } catch (WebDriverException e) { System.out.println(“Exceptional case”); } } catch (TimeOutException e) System.out.println(“WebDriver found that this element was not selectable.”); }
# 8) org.openqa.selenium .TimeoutException
Bu istisna, bir komutun tamamlanması bekleme süresinden daha uzun sürdüğünde ortaya çıkar. Beklemeler çoğunlukla WebDriver'da ElementNotVisibleException istisnasını önlemek için kullanılır.
Bazen test sayfası programdaki bir sonraki komuttan önce tam olarak yüklenmeyebilir. WebDriver, sayfa tamamen yüklenmeden önce web sayfasında bir öğe bulmaya çalışırsa, ElementNotVisibleException istisnası atılır. Bu istisnayı önlemek için bekleme komutları eklenir.
Ancak, bileşenler bekledikten sonra bile yüklenmezse, istisna org.openqa.selenium .TimeoutException fırlatılacak.
driver.manage (). timeout (). örtük olarak Bekleme (10, TimeUnit.SECONDS);
driver.get ('https://www.softwaretestinghelp.com');
Yukarıdaki programda, 10 saniyelik örtük bekleme eklenmiştir. Eğer sayfa www.softwaretestinghelp.com 10 saniye içinde yüklenmez, ardından TimeoutException atılır.
Kaçınma ve Taşıma : Bundan kaçınmak için, bir sayfanın ortalama yüklenmesini manuel olarak kontrol edebilir ve bekleme süresini ayarlayabiliriz
Veya, sayfa yüklenene kadar JavaScript yürütücüsünü kullanarak açık bekleme ekleyebiliriz.
Aşağıdaki örnekte JavaScript yürütücü kullanılmıştır. Sayfa gezintisinden sonra, 'tamamlandı' döndürülene kadar 20 saniye boyunca JavaScript return document.readyState çağırıyoruz.
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30)); wait.until(webDriver -> ((JavascriptExecutor)webDriver).executeScript('return document.readyState').equals('complete')); driver.get('https://www.softwaretestinghelp.com');
# 9) org.openqa.selenium.NoSuchSessionException
Bu istisna, WebDriver.quit () tarafından tarayıcıdan çıktıktan sonra bir yöntem çağrıldığında atılır. Bu, çökmeler gibi web tarayıcısı sorunları nedeniyle de olabilir ve WebDriver, sürücü örneğini kullanarak herhangi bir komutu yürütemez.
Bu istisnayı görmek için aşağıdaki kod çalıştırılabilir.
driver.quit ()
Açılır listeyi seçin = new Select (driver.findElement (By.id ('swift')));
Kaçınma ve Taşıma : Selenium Webdriver test durumlarını çalıştırmak için her zaman tarayıcının en son kararlı sürümünü seçin.
Bu istisna, tüm testlerin tamamlanmasının ardından driver.quit () kullanılarak azaltılabilir. Her test senaryosundan sonra bunları kullanmaya çalışmayın. Bu, sürücü örneği boş olduğunda ve yaklaşan test durumları başlatmadan kullanmaya çalıştığında sorunlara yol açabilir.
bağlantı noktası tetikleme ve bağlantı noktası yönlendirme
Aşağıdaki kod @BeforeSuite TestiNG açıklamasında WebDriver örneğini oluşturur ve @AfterSuite TestiNG açıklamasında yok eder.
@BeforeSuite public void setUp() throws MalformedURLException { WebDriver driver = new FirefoxDriver(); } @AfterSuite public void testDown() { driver.quit(); }
# 10) org.openqa.selenium.StaleElementReferenceException
Bu istisna, web sayfasında artık bir web öğesinin bulunmadığını söylüyor.
Bu hata, ElementNotVisibleException ile aynı değildir.
StaleElementReferenceException, programda belirli bir web öğesi için bir nesne herhangi bir sorun olmadan oluşturulduğunda atılır ve ancak; bu öğe artık pencerede mevcut değildir. Bu, bir
- Başka bir sayfaya gitme
- DOM yenilendi
- Bir çerçeve veya pencere anahtarı
WebElement firstName = driver.findElement (By.id ('ad'));
driver.switchTo (). penceresi (Child_Window);
element.sendKeys ('Aaron');
Yukarıdaki kodda, ilkAdı nesnesi oluşturuldu ve ardından pencere değiştirildi. Ardından WebDriver, form alanına 'Aaron' yazmayı dener. Bu durumda StaleElementReferenceException atılır.
Kaçınma ve Taşıma : İşlemi doğru pencerede yapmaya çalıştığımızı onaylayın. DOM yenilemesinden kaynaklanan sorunları önlemek için Dinamik Xpath kullanabiliriz
Başka bir örneği tartışalım.
Bir kullanıcı adı alanının 'id' si 'username_1' deyin ve XPath // * (@ id = ’firstname_1?) . Sayfayı tekrar açtığınızda 'kimlik' değişebilir ' 'İsim _11 ’. Bu durumda, WebDriver öğeyi bulamadığından test başarısız olacaktır. Bu durumda, StaleElementReferenceException atılır.
Bu durumda, dinamik bir xpath kullanabiliriz.
try { driver.findElement(By.xpath(“//*(contains(@id,firstname’))”)).sendKeys(“Aaron”); } catch (StaleElementReferenceException e)
Yukarıdaki örnekte dinamik XPATH kullanılmıştır ve istisna hala bulunursa yakalanır.
Sonuç
İstisna işleme, her java programının ve selenyum betiğinin temel parçasıdır. Sağlam ve optimum kod oluşturabiliriz: bir istisnayı akıllı yollarla ele almak . Ayrıca, bir programın herhangi bir nedenle başarısız olması durumunda size daha iyi bir rapor verecek bir komut dosyasındaki istisnaları ele almak en iyi uygulamadır.
Burada selenyum betiklerinde uygulanması gereken istisna işleme sürecini ve çerçevesini ele almaya çalıştık.
Bir istisnayı her zaman işlemenin zorunlu olmadığını unutmayın. dene-yakala blok. Ayrıca, bir komut dosyasındaki gereksinime bağlı olarak bir istisna atabilirsiniz.
Programın çalışmasını bozduklarından bir istisna göz ardı edilmemelidir. Bu eğiticide, farklı istisnalar ve bunları manuel kontroller ve kodlar yoluyla elde etme şansını azaltmanın yollarını inceledik.
Beklemeler eklemek, 'NoSuchElementException', 'ElementNotFoundException', 'ElementNotVisibleException' gibi bazı durumları kontrol edebilir.
Sonraki Eğitim # 20 : Gelecek eğitimde, çeşitli test çerçeveleri türleri mevcuttur . Otomasyon testinde gelişmiş bir çerçeve yaklaşımı kullanmanın artılarını ve eksilerini de inceleyeceğiz. Test verisine dayalı çerçeve hakkında ayrıntılı olarak tartışacağız.
Varsa, lütfen istisna işleme ile ilgili sorularınızı Selenium WebDriver'a gönderin.
Önerilen Kaynaklar
- Java İstisnaları ve Örneklerle İstisna İşlemleri
- Selenium WebDriver'da Uyarılar / Açılır Pencereler Nasıl İşlenir - Selenium Eğitimi # 16
- AutoIt Eğitimi - AutoIt İndirme, Yükleme ve Temel AutoIt Komut Dosyası
- Salatalık Selenium Eğitimi: Salatalık Java Selenium WebDriver Entegrasyonu
- Selenium'un JMeter ile entegrasyonu
- Selenium WebDriver'a Giriş - Selenium Eğitimi # 8
- 30+ En İyi Selenyum Öğreticisi: Gerçek Örneklerle Selenyum Öğrenin
- Selenium Uzmanları için Yarı Zamanlı Serbest Çalışma Fırsatı