Ana içeriğe atla

Cypress Notlar -2

Cypress'te Sayfalar Arası İleri Geri Komutu

Cypress'te sayfada ileri gitmek aşağıdaki gibi; 

cy.go(-1)
cy.go("back")
cy.go("forward")
cy.go(1

Tek bir test dosyasıyla bütün testleri koşturma

Cypress'te bütün testleri çalıştırmak için bir cy.js dosyası oluşturup test dosyalarının yolunu verebilirsin ve sadece o dosyayı çalıştırabilirsin.

import "./demoBlazeLoginTest.cy"
import "./demoBlazePom.cy"

Terminal Scripti Oluşturma

Testlerini komut satırından çalıştırmak için package.json dosyasına istediğin komutları ekleyebilirsin. Bunları tarayıcısız olarak da ekleyebilirsin (--headless) ile. Mavi renkli yere istediğini yazabilirsin.

"scripts": {
"cy:run:chrome": "cypress run --browser chrome",
"cy:run:firefox": "cypress run --browser firefox",
"alltestsrun":"npx cypress run cypress/e2e/runAllTests.cy.js",
"cypress:multi:browser": "npm run alltestsrun -- --browser chrome --headed &
 npm run --browser firefox --headed"

Google Chrome Recorder

Google Chrome'un test kaydetme özelliği var. Tarayıcıyı açıp F12'ye bastığında çıkan yan ekranda "Recorder" kısmını kullanıp testini kaydedebilir ve Json dosyası olarak export edebilirsin.

Daha sonra Kod dosyanın terminalinde aşağıdaki kod ile recorder ı indirmelisin.

npm install -g @cypress/chrome-recorder

Sonra indirilen json dosyasını Visual Studio'ya aktarıyoruz, aşağıdaki kod ile. İndirilen dizin ve nereye gelmesini istiyorsak onları belirtiyoruz.

npx @cypress/chrome-recorder /home/kadir/Downloads/sauceDemoRecord.json -o=cypress/e2e 

Chrome'un kaydettiği json dosyası geldikten sonra kod kontrol edilmeli çünkü her hareketi kaydettiği için test koşarken hata alma ihtimali yüksektir. Silinecek, eklenecek ya da değiştirilecek yerlere dikkat edilmeli.

Dosya Ekleme Testi

İlk önce "npm install --save-dev cypress-file-upload" komutu ile yükleme yapılır.

Daha sonra "support/commands.js" e aşağıdaki kod yazılır.

"import 'cypress-file-upload' "

describe ('File Upload Testi', () => {

it('Go to Website', () => {
cy.viewport(1000,1200)
cy.visit('https://fineuploader.com/demos.html')
cy.wait(2000)
cy.get("[name='qqfile']").attachFile({filePath:"./tested.png"})
})
})

Resmin yolunu belirtmeden de aşağıdaki kod ile ekleme yapabiliriz. 

const imageFile = "tested.png"
cy.get("[name='qqfile']").attachFile(imageFile)

 Location-Url Kontrolü

Hostname için https://'den sonrası, protocol http mi, https mi, url bütün adres satırı, pathname'de anasayfadan gidilen adresi /'den sonrası genelde.

cy.location('hostname').should('eq','demoblaze.com')
cy.location('protocol').should('eq','https:')
cy.url().should('eq','https://demoblaze.com/')
cy.location('pathname').should('eq','/index.html')

 *Text alanına bir değer yazdırılmak istendiğinde değerin hepsi yazılmıyorsa, type() dan önce wait eklemek faydalı olur.

Dosya Oluşturma, Yazma/ Dosyadan Okuma

it('Write to File', ()=>{
cy.writeFile('FirstTextFile.txt', 'Merhaba\n')
cy.writeFile('FirstTextFile.txt', 'Bu ilk dosya denemem', {flag: 'a+'})
})//Yol belirtmediğim için cypress in dizinine ekleyecek dosyayı

it('Read File', ()=>{
cy.readFile('FirstTextFile.txt').then((text) =>{
expect(text).to.contain('dosya')
})//Dosyada 'dosya' kelimesini kontrol edecek
})

 


Yorumlar

Bu blogdaki popüler yayınlar

Selenium WebDriver - Dinamik Web Tablolarla Kod Örnekleri

Verisi sürekli değişen tablolarda XPath kullanılması gerekir. Bunu da tablonun satır ve sütun sayı bilgileriyle yapmak daha doğru olur. Tablo 1: Şirket Grup Kapanış Şimdiki Ücret % Değişim IL&FS Transportation A 337.4 66.5 + 5.4 GRUH Finance Li A 383.8 998.9 + 2.3 IDFC Bank A 351.4 715.9 + 5.1 YES Bank Ltd. A 697.9 669.3 + 3.2 IRB Infrastructure A 271 724.8 + 3.1 Escorts Ltd. A 113.4 890.3 + 5.1 Cox & Kings L A 867 900.8 + 5.5 Bharat Electroni A 176.5 849 + 7.5 Nestle India A 64.8 187.3 + 7.6 Cox & Kings L A 749.4 729.5 + 9.5 JK Tyre & Industries A 687 601.4 + 6 Navin Fluorine Inter A 416.7 865.3 + 8.9 NIIT Technologies A 966.9 117.2 + 9.4 DCB Bank A 853.2 760.2 + 2.4 UCO Bank A 358 719.6 + 9 Coffee Day Enterpris A 53.8 538.6 + 4.1 Kirloskar Oil Engine A 134.1 102.8 + 7.7 Repco Home Finance L A 96.2 449.9 + 8.9 Ajanta Pharma Lt A 161.3 838 + 4.4 CESC Ltd. A 817 490.5 + 4.7 JaiprakashAssociates A 247.3 961.1 + 7.1 Vakrangee A 888.3 652.9 ...

Test Otomasyonu için Intellij IDEA Maven Projesi Oluşturma

Intellij IDEA - File - Project - New tıklayın.  Soldan Maven ı seçin.  İleriye basın.  Group ID, sizin projenizi tanımlayan bir isim olmalı. Bu alanı doldurun. ArtifactId, projenizin adı. Bu alanı doldurun. Project name, artifactID alanına yazdığınız değer gelir. Finish e basın. İlk olarak karşınıza projenizin pom.xml dosyası gelecek. Buraya ilgili bağımlılıkları ekleyin. Selenium için;  https://www.seleniumhq.org/download/maven.jsp  adresindeki güncel bağımlılığı <dependencies> </dependencies> satırlarının arasına ekleyin. Daha sonra sağ altta çıkan uyarıda Import linkine basın. Böylelikle maven belirttiğiniz versiyonun dosyalarını alacaktır. Test framework ü olarak kullandığımız JUnit bağımlılığı için  https://mvnrepository.com/artifact/junit/junit  adresindeki güncel versiyonundan aldığınız satırları yine aynı  <dependencies> </dependencies> satırlarının arasına ekleyin. Daha sonra sağ altta çıkan uya...

Selenium - XPath Kodları

XPath, XML Path Absolute XPath: root node u verir ve / ile başlar Elementin path inde herhangi bir değişiklik yapılırsa, test kodu hata verir. Örn:  html/body/div[1]/section/div[1]/div/div/div/div[1]/div/div/div/div/div[3]/div[1]/div/h4[1]/b Relative XPath: xml dokümanındaki elementi verir ve // ile başlar Örn : //*[@class='featured-box']//*[text()='Testing'] XPath Kombinasyonları: Belli bir tagin belli bir attribute değeri ile kullanımı Herhangi bir tag in belli bir attribute değeri ile kullanımı "and" operatörü "or" operatörü Belirli bir değer ile başlayan attribute Metnin bir kısmını içeren attribute Sadece text() Herhangi bir attribute un değeri Belli Bir Tag'ın Belli Bir Attribute Değeri ile Kullanımı (Specific tag with specific attribute value) Html Kodu < input   id = "Lid"  .....   > input:tag adı (etiket adı) id : attribute Lid : attribute değeri Selenium Kodu driver.findElement(By.x...