{"id":2238,"date":"2023-08-22T17:40:52","date_gmt":"2023-08-22T17:40:52","guid":{"rendered":"https:\/\/gizemevkuran.com\/?p=2238"},"modified":"2023-08-22T17:40:55","modified_gmt":"2023-08-22T17:40:55","slug":"selenium-web-driver-yer-bulucular-locators","status":"publish","type":"post","link":"https:\/\/gizemevkuran.com\/?p=2238","title":{"rendered":"Selenium Web Driver: Yer Bulucular (Locators)"},"content":{"rendered":"\n<p>\u00d6ncelikle Selenium serime Selenium Web Driver ile devam edece\u011fimi belirtmek istiyorum \ud83d\ude42<\/p>\n\n\n\n<p>Bu yaz\u0131da Selenium Web Driver kullanarak geli\u015ftirdi\u011fimiz test otomasyonunda kullan\u0131lan yer buluculardan bahsedece\u011fim.<\/p>\n\n\n\n<p>Selenium Yer Bulucular, web sayfas\u0131ndaki web \u00f6\u011felerini tan\u0131mlamak i\u00e7in kullan\u0131l\u0131r. Selenium\u2019da; metin kutular\u0131, onay kutular\u0131, ba\u011flant\u0131lar, radyo butonlar\u0131, liste kutular\u0131 ve di\u011fer web \u00f6\u011feler \u00fczerinde eylemler ger\u00e7ekle\u015ftirmek i\u00e7in yer buluculara ihtiyac\u0131m\u0131z vard\u0131r. Konum belirleyiciler bize nesneleri tan\u0131mlamada yard\u0131mc\u0131 olur.<\/p>\n\n\n\n<p><strong>Selenium Yer Bulucular(Locators) Nelerdir?<\/strong><\/p>\n\n\n\n<p>ID<\/p>\n\n\n\n<p>Class Name<\/p>\n\n\n\n<p>CSS Selector<\/p>\n\n\n\n<p>Name<\/p>\n\n\n\n<p>Xpath<\/p>\n\n\n\n<p>Linktext<\/p>\n\n\n\n<p>Partial Linktext<\/p>\n\n\n\n<p>Tag Name<\/p>\n\n\n\n<p>DOM Locator<\/p>\n\n\n\n<p><strong>Web Sayfas\u0131ndaki \u00d6\u011feleri Nas\u0131l Buluruz?<\/strong><\/p>\n\n\n\n<p>Yukar\u0131daki listede verdi\u011fim yer bulucular\u0131 kullanmadan \u00f6nce web sayfas\u0131 \u00fczerindeki elementlere nas\u0131l ula\u015f\u0131r\u0131z g\u00f6stermek istiyorum.<\/p>\n\n\n\n<p>1)\u00d6ncelikle otomasyon yazaca\u011f\u0131m\u0131z site i\u00e7erisinde klavyeden F12\u2019ye basarak geli\u015ftirici se\u00e7eneklerine ula\u015f\u0131yoruz. Bu ekran\u0131 farkl\u0131 bir pencerede yada sayfan\u0131z\u0131n solunda,sa\u011f\u0131nda,a\u015fa\u011f\u0131s\u0131nda duracak \u015fekilde a\u00e7abilirsiniz(Bkz: \u2018Dock Side\u2019 g\u00f6rseli).<\/p>\n\n\n\n<p>2)Burada \u2018Elements\u2019 tab\u0131n\u0131 a\u00e7\u0131yoruz. Web sayfam\u0131zdaki b\u00fct\u00fcn elementleri burada g\u00f6rebiliriz.<\/p>\n\n\n\n<p>3)\u0130lk 2 maddeyi bu ekran\u0131 tan\u0131man\u0131z i\u00e7in yazd\u0131m ancak direk olarak ilgili elemente ula\u015fmak i\u00e7in elementin \u00fczerine gelip(\u00d6rne\u011fin bir \u2018Oturum A\u00e7\u2019 butonu olabilir) sa\u011fa t\u0131klay\u0131p \u2018\u0130ncele\u2019 se\u00e7ene\u011fine t\u0131klayarak bu elemente ait yer buluculara ula\u015fabilirsiniz(Bkz: \u2018\u0130ncele Se\u00e7ene\u011fi\u2019 g\u00f6rseli).<\/p>\n\n\n\n<p>4)Elementin bilgilerinden size uygun olan locator i\u00e7in gerekli bilgileri al\u0131p otomasyonunuzda bu elemente ula\u015fmak i\u00e7in kullanabilirsiniz(Bkz: \u2018Element Bilgileri\u2019 g\u00f6rseli)<\/p>\n\n\n\n<p>Dock Side<\/p>\n\n\n\n<p>\u0130ncele<\/p>\n\n\n\n<p>Element Bilgileri<\/p>\n\n\n\n<p>Yer Bulucular\u0131n \u00d6zellikleri ve Kullan\u0131mlar\u0131<\/p>\n\n\n\n<p>Selenium Web Driver\u2019da ilgili elementleri bulabilmek i\u00e7in \u2018findElement\/findElements\u2019 syntax\u0131n\u0131 kullanmal\u0131y\u0131z.<\/p>\n\n\n\n<p>1)ID<\/p>\n\n\n\n<p>ID, web sayfas\u0131nda her \u00f6\u011feye \u00f6zg\u00fc oldu\u011fu d\u00fc\u015f\u00fcn\u00fclerek \u00f6\u011feleri bulman\u0131n en yayg\u0131n yoludur. World Wide Web Konsorsiyumu\u2019na (W3C) dayal\u0131 kimlikler \u00f6\u011felere \u00f6zg\u00fc olmal\u0131d\u0131r ve bu nedenle \u00f6\u011feyi bulmak i\u00e7in en h\u0131zl\u0131 ve en g\u00fcvenli y\u00f6ntem olarak kabul edilir. Ancak ne yaz\u0131k ki, taray\u0131c\u0131lar bu kural\u0131 atlamaya izin verdi\u011fi i\u00e7in geli\u015ftiriciler bu kurala uymayabilir. \u00d6zellikle, bir tablo veya liste s\u00f6z konusu oldu\u011funda, kimlikler verilere ba\u011fl\u0131 olarak art\u0131ml\u0131 veya dinamik olarak yerle\u015ftirilebilir ve bu da bu t\u00fcr \u00f6\u011felerin ba\u015fka yollarla bulunmas\u0131n\u0131 gerektirebilir. Id\u2019nin de\u011fi\u015fken olup olmad\u0131\u011f\u0131 sayfa yenilenerek tekrar ilgili elemente ula\u015f\u0131p kontrol ederek anla\u015f\u0131labilir.<\/p>\n\n\n\n<p>ID Locator<\/p>\n\n\n\n<p>Syntax: driver.findElement(By.id(\u201cemail\u201d))<\/p>\n\n\n\n<p>2)ClassName<\/p>\n\n\n\n<p>ClassName locator, elementin class \u00f6zelli\u011fi kullan\u0131larak bulunmas\u0131n\u0131 sa\u011flar. Element bilgileri i\u00e7erisinden \u2018class = \u2026\u2026\u2019 etiketindeki bilgi al\u0131n\u0131r.<\/p>\n\n\n\n<p>ClassName<\/p>\n\n\n\n<p>Syntax: driver.findElement(By.className(\u201cbtn btn-lg btn-primary\u201d))<\/p>\n\n\n\n<p>3)CSS Selector<\/p>\n\n\n\n<p>Bir elementte ID yada name ile ilgili bir bilgi yoksa veya bunlar de\u011fi\u015fken ise genellikle CSS Selector veya xpath kullan\u0131l\u0131r. xpath ile kar\u015f\u0131la\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda CSS Selector daha h\u0131zl\u0131 \u00e7al\u0131\u015fmaktad\u0131r. Bu nedenle bir engel yoksa \u00f6ncelikle CSS Selector tercih edilir.<\/p>\n\n\n\n<p>CSS Se\u00e7icileri \u00e7e\u015fitli bi\u00e7imlerde bulunabilir:<\/p>\n\n\n\n<p>Tag ve ID<\/p>\n\n\n\n<p>Tag ve Class<\/p>\n\n\n\n<p>Tag ve Attribute<\/p>\n\n\n\n<p>Tag, Class ve Attribute<\/p>\n\n\n\n<p>Matches (Starts with, Ends with, Contains)<\/p>\n\n\n\n<p>Child elementler<\/p>\n\n\n\n<p>CSS Selectorlerin kullan\u0131m detaylar\u0131n\u0131 \u2018CSS Selector ve Xpath Kullan\u0131mlar\u0131\u2019 yaz\u0131mda bulabilirsiniz \ud83d\ude42<\/p>\n\n\n\n<p>4)Name<\/p>\n\n\n\n<p>Selenium WebDriver\u2019daki Name locator, ID gibi kullan\u0131labilir. Birden fazla elemente sahip bir sayfada benzersiz olabilir veya olmayabilir. Ayn\u0131 Name\u2019e sahip elementler olmas\u0131 durumunda, konumland\u0131r\u0131c\u0131 sayfada bu ada sahip ilk elementi se\u00e7er. Tan\u0131mlanan Name de\u011feri ile b\u00f6yle bir de\u011ferin e\u015fle\u015fmemesi durumunda NoSuchElementException olu\u015facakt\u0131r.<\/p>\n\n\n\n<p>\u00d6rnek element;<\/p>\n\n\n\n<p>&lt;input type=\u201demail\u201d placeholder=\u201dWork Email*\u201d name=\u201demail_field\u201d value=\u201d\u201d class=\u201dform-control sign-up-input-2 \u201c&gt;<\/p>\n\n\n\n<p>Syntax: driver.findElement(By.name(\u201cemail_field\u201d))<\/p>\n\n\n\n<p>5)Xpath<\/p>\n\n\n\n<p>Xpath, XML ifadelerini kullanarak web sayfas\u0131ndaki \u00f6\u011feleri bulmaya yard\u0131mc\u0131 olur.<\/p>\n\n\n\n<p>Syntax: Xpath= \/\/tagname[@attribute=\u2019value\u2019]\n\n\n\n<p>tagname= hedefledi\u011finiz elementin etiketi, \u00f6rne\u011fin bir giri\u015f(input) etiketini veya ba\u011flant\u0131(anchor) etiketini, vb. belirtir.<\/p>\n\n\n\n<p>attribute= \u2018@\u2019 \u00f6n eki ve kar\u015f\u0131l\u0131k gelen de\u011ferleri ile tan\u0131mlan\u0131r. Name, ID, Class vb. olab\u0131l\u0131r.<\/p>\n\n\n\n<p>Xpath Se\u00e7icileri \u00e7e\u015fitli bi\u00e7imlerde bulunabilir:<\/p>\n\n\n\n<p>Standard Xpath<\/p>\n\n\n\n<p>Contains<\/p>\n\n\n\n<p>AND &amp; OR<\/p>\n\n\n\n<p>Starts-with<\/p>\n\n\n\n<p>Text<\/p>\n\n\n\n<p>Xpath Selectorlerin kullan\u0131m detaylar\u0131n\u0131 \u2018CSS Selector ve Xpath Kullan\u0131mlar\u0131\u2019 yaz\u0131mda bulabilirsiniz \ud83d\ude42<\/p>\n\n\n\n<p>6)LinkText<\/p>\n\n\n\n<p>Elementler, ba\u011flant\u0131 metni arac\u0131l\u0131\u011f\u0131yla yerle\u015ftirilebilir. Ayn\u0131 metnin birden \u00e7ok ba\u011flant\u0131s\u0131n\u0131n bulundu\u011fu bir senaryoda, ilk ba\u011flant\u0131 se\u00e7ilir.<\/p>\n\n\n\n<p>\u00d6rnek element;<\/p>\n\n\n\n<p>&lt;a href=\u201dhttps:\/\/www.gizemgulec.com\/blog\u201d target=\u201d_blank\u201d&gt;Blog&lt;\/a&gt;<\/p>\n\n\n\n<p>Elementi bulmak i\u00e7in linktext kullan\u0131m\u0131;<\/p>\n\n\n\n<p>Syntax: driver.findElement(By.linkText(\u201cBlog\u201d))<\/p>\n\n\n\n<p>7)Partial LinkText<\/p>\n\n\n\n<p>Partial LinkText yoluyla konum belirleme normal LinkText konumland\u0131r\u0131c\u0131s\u0131na benzer \u015fekilde \u00e7al\u0131\u015f\u0131r. Selenium WebDriver\u2019da Partial LinkText kullan\u0131lma nedeni, uzun bir ba\u011flant\u0131 metninizin olmas\u0131 ve \u00fczerinde daha fazla i\u015flem yapmak i\u00e7in yaln\u0131zca k\u0131smi metin kullanmak istedi\u011finizden kaynaklanmaktad\u0131r. Bazen bunu kullanma amac\u0131, ortak k\u0131smi metne sahip bir sayfada birden \u00e7ok ba\u011flant\u0131y\u0131 bulmak olabilir.<\/p>\n\n\n\n<p>\u00d6rnek Elementimiz;<\/p>\n\n\n\n<p>&lt;a href=\u201dhttps:\/\/gizemgulec.com\/register\u201d target=\u201d_blank\u201d&gt;SOFTWARE TESTING TYPES &lt;i class=\u201dfa fa-arrow-circle-right\u201d aria-hidden=\u201dtrue\u201d&gt;&lt;\/i&gt;&lt;\/a&gt;<\/p>\n\n\n\n<p>Elementi bulmak i\u00e7in Partial Link Text kullan\u0131m\u0131;<\/p>\n\n\n\n<p>driver.findElement(By.PartialLinkText(\u201cTESTING\u201c))<\/p>\n\n\n\n<p>8)Tag Name<\/p>\n\n\n\n<p>Ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, Selenium WebDriver\u2019daki bu bulucu, div etiketi, etiket vb. gibi etiket adlar\u0131na sahip \u00f6\u011feleri tan\u0131mlamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n\n\n\n<p>Syntax: driver.findElements(By.tagName());<\/p>\n\n\n\n<p>\u00d6rnekler;<\/p>\n\n\n\n<p>driver.findElements(By.tagName(a));<\/p>\n\n\n\n<p>driver.findElements(By.tagName(div));<\/p>\n\n\n\n<p>driver.findElements(By.tagName(tr));<\/p>\n\n\n\n<p>driver.findElements(By.tagName(td));<\/p>\n\n\n\n<p>9)DOM Locator<\/p>\n\n\n\n<p>Elementi ID ve NAme yoluyla DOM\u2019un \u201cgetElementById\u201d ve \u201cgetElementsByName\u201d gibi y\u00f6ntemlerini kullanarak tan\u0131mlayabiliriz. GetElementById y\u00f6ntemi bir kerede yaln\u0131zca bir \u00f6\u011feyi bulur, di\u011fer y\u00f6ntem ise bu adla bulunan bir dizi elementi sa\u011flamak i\u00e7in kullan\u0131l\u0131r. Bir dizi elementin olmas\u0131 durumunda belirtilen spesifik bir \u00f6\u011feye eri\u015fmek i\u00e7in index kullanabiliriz.<\/p>\n\n\n\n<p>Syntax:<\/p>\n\n\n\n<p>document.getElementById (\u201cid\u201d)<\/p>\n\n\n\n<p>document.getElementsByNames (\u201cname\u201d)[index]\n\n\n\n<p>Bu yaz\u0131mda size Selenium Web Driver\u2019da Locator\u2019lar\u0131n kullan\u0131m\u0131n\u0131 anlatmaya \u00e7al\u0131\u015ft\u0131m. Umar\u0131m faydal\u0131 olmu\u015ftur \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00d6ncelikle Selenium serime Selenium Web Driver ile devam edece\u011fimi belirtmek istiyorum \ud83d\ude42 Bu yaz\u0131da Selenium Web Driver kullanarak geli\u015ftirdi\u011fimiz test otomasyonunda kullan\u0131lan yer buluculardan bahsedece\u011fim. Selenium Yer Bulucular, web sayfas\u0131ndaki web \u00f6\u011felerini tan\u0131mlamak i\u00e7in kullan\u0131l\u0131r. Selenium\u2019da; metin kutular\u0131, onay kutular\u0131, ba\u011flant\u0131lar, radyo butonlar\u0131, liste kutular\u0131 ve di\u011fer web \u00f6\u011feler \u00fczerinde eylemler ger\u00e7ekle\u015ftirmek i\u00e7in yer buluculara<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[27],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/posts\/2238"}],"collection":[{"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2238"}],"version-history":[{"count":1,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/posts\/2238\/revisions"}],"predecessor-version":[{"id":2239,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=\/wp\/v2\/posts\/2238\/revisions\/2239"}],"wp:attachment":[{"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gizemevkuran.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}