Yearsyllar boýy bir tendensiýany görmek üçin öňden gelýän ösüşde boldum: taryhy ösüşine düşünmän täze programmirleme paradigmasy bilen işleýän ýaş döredijiler. Elbetde, bir zady bilmezlik gaty düşnükli. Web dürli başarnyklar we hünärler toplumy bilen örän uly ýer, biz bilmeýän zadymyzy hemişe bilemzok. Bu ugurda öwrenmek, bir gezek bolup geçýän we gutarýan bir zat däl-de, dowamly syýahatdyr. Mesele: Toparymdaky kimdir biri ulanyjylaryň UI-de belli bir goýmadan daşlaşýandygyny ýa-da ýokdugyny aýdyp boljakdygyny sorady. JavaScript-iň ýükleme hadysasyny görkezdim. Beforeöne öň bu meseläni çözenler munuň mümkindigini bilýärler, sebäbi beýleki saýtlarda saklanmadyk maglumatlar barada duýduryşlar berilýär, munuň üçin ýüklemegiň adaty ulanylyşy bolýar. Şeýle hem, sahypamy gizlemek we görmek üçin üýtgeşiklikleri kärdeşime görkezdim. Men muny nädip bildim? Başga bir taslamada ýüze çykandygy üçin, başda JavaScript öwrenenimde öwrenenim üçin däl. Hakykat, häzirki zaman çarçuwalarynyň özlerinden ozalky tehnologiýa ägirtleriniň egninde durmagydyr. Abstrakt ösüş amallary, köplenç her kimiň bilmeli esasy düşünjelerini bilmek ýa-da degmek zerurlygyny azaldýan ýa-da ýok edýän has gowy işläp düzmek tejribesi üçin. CSS obýekt modeline (CSSOM) serediň. CSS we JavaScript-de işleýänleriň bir topar CSSOM tejribesi bar diýip garaşyp bilersiňiz, ýöne bu mydama beýle bolmaz. Elektron söwda sahypasy üçin “React” taslamasy bardy, häzirki saýlanan töleg üpjün edijisi üçin stil tablisasyny ýüklemeli ýerimizde işledim. Mesele stil sahypasynyň diňe belli bir sahypada zerur bolanda her sahypada ýüklenmegidi. Muny amala aşyrmak üçin taýýarlaýjy hiç haçan stil tablisasyny dinamiki ýüklemedi. Againene-de, “React” adaty däp bolan çemeleşmäni gysgaça beýan edende, bu düýbünden düşnüklidir. CSSOM gündelik işiňizde zerur zat däl bolsa gerek. Itöne munuň bilen belli bir wagtda, hatda bir gezeklik ýagdaýda-da aragatnaşyk saklamaly bolarsyňyz. Bu başdan geçirmeler meni bu makalany ýazmaga ruhlandyrdy. Wildabany dünýäde bar bolan web aýratynlyklary we tehnologiýalary bar, olar gündelik işiňizde göni degip bilmez. Belki-de, web ösüşi üçin düýbünden täze bolsaňyz we olardan bihabarsyňyz, sebäbi çuňňur bilmegiňizi talap etmeýän belli bir çarçuwanyň abstraksiýasyna girip bilersiňiz. Men XML hakda aýratyn aýdýaryn, köpümiziň bilýän HTML-den düýpgöter tapawutly däl gadymy dil. Soňky WHATWG diskussiýalary sebäpli, XSLT programmirleme diýlip atlandyrylýan XML stakanyň ep-esli bölegini brauzerlerden aýyrmalydygyny öňe sürýärin. Bu, meniň toparymdaky CSSOM ýagdaýy ýaly amaly bir zat üçin ulanylyp bilinjek köne, bar bolan tehnologiýanyň görnüşi. Öň XSLT bilen işlediňizmi? Geliň, bu köne tehnologiýa ep-esli derejede bil baglaýarys we häzirki wagtda hakyky dünýädäki meseleleri çözmek üçin XML-den başga aýratynlyklaryny ulanýarys. XPath: Merkezi API Göni XML perspektiwasynyň daşynda iň peýdaly bolmagy mümkin iň möhüm XML tehnologiýasy, bir kök elementi bolan bellik agajynda islendik düwün ýa-da atribut tapmaga mümkinçilik berýän talap dili bolan XPathdyr. XSLT-ä şahsy söýgim bar, ýöne bu hem XPath-a daýanýar we şahsy söýgi reýting ähmiýetinde bir gapdala goýulmaly. XSLT-ni aýyrmak baradaky argumentde XPath hakda hiç zat aýdylmaýar, şonuň üçinem oňa rugsat berilýär öýdýärin. Bu gowy, sebäbi XPath bu tehnologiýa toplumynda merkezi we iň möhüm API, esasanam adaty XML ulanylyşynyň daşynda ulanjak bir zat tapjak bolanyňyzda. Bu möhümdir, sebäbi CSS saýlaýjylary sahypaňyzdaky elementleriň köpüsini tapmak üçin ulanylsa-da, hemmesini tapyp bilmeýär. Mundan başga-da, CSS saýlaýjylary DOM-daky häzirki ýagdaýyna baglylykda element tapmak üçin ulanylyp bilinmez. XPath edip biler. Indi muny okaýanlaryňyzyň käbiri XPath-y bilip biler, käbirleri bilmezligi mümkin. XPath tehnologiýanyň gaty uly ugry, men ähli esaslary öwredip bilemok we şuňa meňzeş bir makalada size munuň bilen baglanyşykly ajaýyp zatlary görkezip bilemok. Aslynda bu makalany ýazmaga synanyşdym, ýöne “Smashing” Magazineurnalynyň ortaça neşiri 5000 sözden geçmeýär. Men eýýäm has köpdi2000 söz, esaslaryň diňe ýarysynda. Şeýlelik bilen, XPath bilen ajaýyp zatlar edip başlaryn we bu zatlary gyzykly görseňiz esaslar üçin ulanyp boljak käbir baglanyşyklary bererin. XPath & CSS-ni birleşdirmek XPath, elementleri soranda CSS saýlaýjylarynyň edip bilmeýän köp zady edip biler. CSöne CSS saýlaýjylary, XPath-yň edip bilmejek birnäçe zadyny, ýagny synp ady boýunça elementleri talap edip bilerler.

CSS XPath .Class / * [öz içine alýar (@class, "myClass")]

Bu mysalda, CSS .myClass synp adyny öz içine alýan elementleri soraýar. Bu aralykda, XPath mysaly “myClass” setiri bilen atribut synpyny öz içine alýan elementleri soraýar. Başga sözler bilen aýdylanda, islendik atributda myClass bilen elementleri, şol sanda .myClass synp ady bilen elementleri, şeýle hem .myClass2 ýaly setirdäki “myClass” elementlerini saýlaýar. Bu manyda XPath has giňdir. Diýmek, ýok. CSS-i taşlamaly we XPath arkaly ähli elementleri saýlap başlamaly diýemok. Munuň manysy ýok. Esasy zat, XPath brauzeriň bukjasyndaky köne tehnologiýa bolsa-da, ilkinji seredişde düşnüksiz bolup görünse-de, CSS-iň edip bilmeýän we henizem peýdaly bolup biljek zatlaryny edip biler. Geliň, iki tehnologiýany diňe bir başaranymyz üçin däl-de, eýsem XPath hakda bir zatlar öwreneris we ony bukjanyňyza başga bir gural ederis - bilmeýän zadyňyz şol ýerde bar! Mesele, JavaScript-iň resminama.evaluate usuly we JavaScript üçin CSS API-leri bilen ulanýan dürli talap saýlaýjy usullarymyzyň biri-birine gabat gelmeýänligidir. Başlamak üçin utgaşykly talap API ýasadym, boýun alsa-da, bu ýerde edýän işlerimizden daşlaşany üçin kän pikir etmedim. Ine, gaýtadan ulanylýan talap konstruktorynyň gaty ýönekeý iş mysaly: Braýan Rasmusseniň “Galam” soragyna serediň. Resminamanyň obýektine iki usul goşdum: queryCSSSelectors (bu esasanSelectorAll talap) we queryXPaths. Bularyň ikisi-de bir soragyň netijesi:

{ Talap görnüşi: düwünler | setir | sany | boolean, netijeler: islendik [] // html elementleri, xml elementleri, setirler, sanlar, booleans, queryCSSSelectors: (talap: setir, düzediş: boolean) => queryResult, queryXpaths: (talap: setir, düzediş: boolean) => queryResult }

“QueryCSSSelectors” we “QueryXpaths” funksiýalary, netijeler massiwiniň görnüşli düwünler bolýança, netijeler massiwindäki elementleriň üstünden beren soragyňyzy işledýär. Otherwiseogsam, boş massiw we düwünleriň bir görnüşi bilen “Result” soragyny yzyna getirer. Düzediş emlägi dogry bolsa, funksiýalar öz talaplaryny üýtgeder. Hiç hili ýagdaýda muny önümçilik gurşawynda ulanmaly däl. Iki talap API-ni bilelikde ulanmagyň dürli täsirlerini görkezmek üçin muny diňe şu görnüşde edýärin. Mysal soraglary Dürli XPath talaplarynyň edip biljek käbir güýçli zatlaryny we beýleki çemeleşmeleriň ýerine nädip ulanyp boljakdygyny görkezýän birnäçe mysal görkezmek isleýärin. Birinji mysal // li / text (). Bu ähli li elementlerini soraýar we tekst düwünlerini yzyna berýär. Şeýlelik bilen, aşakdaky HTML soramaly bolsak:

  • bir
  • iki
  • üç

... yzyna gaýtarylan zat:

{"queryType": "xpathEvaluate", "netijeler": ["bir", "iki", "üç"], "netije görnüşi": "setir"}

Başgaça aýdylanda, aşakdaky massiw alýarys: ["bir", "iki", "üç"]. Adatça, li elementlerini almak üçin sorap bilersiňiz, şol soragyň netijesini bir massiwine öwüriň, massiwiň kartasyny düzüň we her elementiň tekst düwünini yzyna gaýtaryň. Emma muny XPath bilen has gysga edip bileris: resminama.queryXPaths ("// li / text ()") netijeleri.

Tekst düwünini almagyň ýolunyň, funksiýa goluna meňzeýän teksti () ulanmakdygyna üns beriň - we şeýle. Bir elementiň tekst düwünini gaýtaryp berýär. Mysal üçin, bellikde üç sany li element bar, olaryň hersinde tekst bar ("bir", "iki" we "üç"). Geliň, tekst () talapynyň ýene bir mysalyna seredeliň. Bu biziň belligimizdir öýdýän: Giriş

Geliň, href atributynyň bahasyny gaýtaryp berýän talap ýazalyň: document.queryXPaths ("// a [text () = 'Giriş'] / @ href") netijeleri.

Bu, soňky resminamadaky ýaly, häzirki resminamadaky XPath talap, ýöne bu gezek "Giriş" tekstini öz içine alýan baglanyşygyň (elementiň) href atributyny yzyna gaýtaryp berýäris. Hakyky yzyna gaýdyp geldinetije ["/login.html"]. XPath funksiýalaryna syn Birnäçe XPath funksiýasy bar, belki-de olar bilen tanyş dälsiňiz. Meniň pikirimçe, aşakdakylary goşmak bilen bilmeli birnäçe zat bar:

başlaýar - eger bir tekst başga bir tekst mysaly bilen başlasa, href atributy http :. bilen başlasa, başlaýar (@href, 'http:'). öz içine alýar Eger bir tekst başga bir tekst mysalyny öz içine alýan bolsa, tekst düwmesiniň islendik ýerinde “ashingurnal” sözlerini öz içine alýan bolsa (tekst (), “ashingurnal”) hakyky bolýar. count Talapda näçe gabat gelýändigini sanamagy görkezýär. Mysal üçin, sanamak (// * [start-with (@href, 'http:'])) kontekst düwünindäki näçe baglanyşygyň http :. bilen başlaýan teksti öz içine alýan href atributy bolan elementleriň sanyny görkezýär. substringWaws JavaScript substring ýaly işleýär, setiri argument hökmünde geçirseňiz. Mysal üçin, substring ("meniň tekstim", 2, 4) "y t" gaýtarýar. substring-beforeGözlügiň bölegini başga bir setirden ozal gaýtaryp berýär. Mysal üçin, öňden çalyşmak ("meniň tekstim", "") "meniň" -i yzyna getirýär. Edil şonuň ýaly, öňden ("salam", "hoş") boş setir gaýtarylýar. substring-afterGyzagyň bir bölegini başga setirden soň gaýtaryp berýär. Mysal üçin, çalyşmak ("meniň tekstim", "") "tekst" gaýtarýar. Edil şonuň ýaly, substring-after ("salam", "hoş") boş setiri gaýtaryp berýär. normalize-spaceRegment setirini öňdebaryjy we yzarlaýan giňişligi aýyrmak we giňişlik nyşanlarynyň yzygiderliligini bir boşluk bilen çalyşmak arkaly kadalaşdyrylan giňişlik bilen yzyna getirýär. argument ýalňyş bolsa, başgaça ýalan bolsa, bir hakykaty görkezýär. trueReturns boolean true. falseReturns boolean false. konat JavaScript konkaty bilen birmeňzeş zat, ony setirde usul hökmünde ulanmasaňyz. Munuň ýerine, birleşdirmek isleýän ähli setirleriňizi goýýarsyňyz. string-lengthBu JavaScript setir uzynlygy bilen birmeňzeş däl, tersine, argument hökmünde berlen setiriň uzynlygyny gaýtaryp berýär. translateBu setir alýar we ikinji argumenti üçünji argumente üýtgedýär. Mysal üçin, XYZdef-iň netijelerini terjime ediň ("abcdef", "abc", "XYZ").

Bu aýratyn XPath funksiýalaryndan başga-da, JavaScript kärdeşleri ýa-da esasan islendik programmirleme dilindäki kärdeşleri bilen birmeňzeş işleýän başga-da birnäçe funksiýa bar - belki, pol, potolok, tegelek, jem we ş.m. Aşakdaky demo bu funksiýalaryň hersini görkezýär: Braýan Rasmusseniň “Pen XPath” san funksiýalaryna serediň. Setir manipulýasiýa funksiýalarynyň köpüsi ýaly, sanlaryň köpüsiniň ýekeje giriş alýandygyna üns beriň. Bu, elbetde, soňky XPath mysalynda bolşy ýaly, soramak üçin ulanylmalydygy üçin: // li [pol (tekst ())> 250] / @ val

Mysallaryň köpüsiniň edişi ýaly, olary ulansaňyz, ýoly gabat gelýän ilkinji düwünde işledersiňiz. Şeýle hem, käbir görnüşli öwrüliş funksiýalary bar, belki JavaScript-iň eýýäm öz görnüşini öwürmek meselesi bar. Aöne başga bir belgä garşy barlamak üçin bir setiri sana öwürmek isleýän wagtyňyz bolup biler. Bir zadyň görnüşini kesgitleýän funksiýalar, san, setir we düwün. Bular möhüm XPath maglumat görnüşleri. Göz öňüne getirişiňiz ýaly, bu funksiýalaryň köpüsi DOM düwünleri bolmadyk maglumat görnüşlerinde ulanylyp bilner. Mysal üçin, substring-soň eýýäm ýapyşymyz ýaly bir setir alýar, ýöne href atributyndan setir bolup biler. Şeýle hem diňe setir bolup biler:

const testSubstringAfter = document.queryXPaths ("substring-after ('salam dünýä', '')");

Elbetde, bu mysal netijeler massiwini [“dünýä”] hökmünde yzyna berer. Muny hereketde görkezmek üçin, DOM düwünleri bolmadyk zatlara garşy funksiýalary ulanyp, demo sahypasyny ýasadym: Braýan Rasmusseniň “Galam” soragyna serediň. Terjime funksiýasynyň geň galdyryjy tarapyny bellemelisiňiz, eger ikinji argumentde bir nyşan bar bolsa (ýagny, terjime etmek isleýän nyşanlaryňyzyň sanawy) we terjime etmek üçin gabat gelýän nyşan ýok bolsa, bu nyşan çykyşdan aýrylýar. Şeýlelikde, bu:

terjime et ('Salam, meniň adym Inigo Montoýa, kakamy öldürdiň, ölmäge taýyn bol', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,', '*')

... boşluklary goşmak bilen setirde netijeler: ["* * **"]

Bu “a” harpynyň ýyldyz ýyldyzyna (*) terjime edilýändigini aňladýar, ýöne nyşan setirini göz öňünde tutup terjimesi bolmadyk beýleki nyşanlaryň hemmesi aýrylýar. Ak giňişlik biziň galan zatlarymyzterjime edilen “a” nyşanlaryň arasynda. Soň ýene-de şu sorag:

terjime et ('Salam, meniň adym Inigo Montoýa, kakamy öldürdiň, ölmäge taýyn bol' ',' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ, ',' **************************************************************************************************************************************************************************************************************************************

... problema ýok we şuňa meňzeş netije çykarýar:

"***** ** **** ** ***** ******* *** ****** ** ****** ******* ** ***"

JavaScript-de XPath terjime funksiýasyny takyk ýerine ýetirmek üçin aňsat usulyň ýokdugy sizi haýran galdyryp biler, köp ulanylan ýagdaýlarda, hemmesini yzygiderli aňlatmalar bilen çalşyp bilersiňiz. Meniň görkezen çemeleşmämizi ulanyp bilersiňiz, ýöne isleýän zadyňyz setirleri terjime etmek bolsa, bu suboptimal. Aşakdaky demo, JavaScript wersiýasyny üpjün etmek üçin XPath-yň terjime funksiýasyny jemleýär: Braýan Rasmusseniň “Galam” terjime funksiýasyna serediň. Munuň ýaly zady nirede ulanyp bilersiňiz? Üç ýerli ofset bilen Sezar Cipher şifrlemesine serediň (meselem, beöň 48-nji ýyldan başlap iň ýokarky şifrlemek):

terjime et ("Sezar Rubikondan geçmegi meýilleşdirýär!", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "XYZABCDEFGHIJKLMNOPQRSTUVWxyzabcdefghijklmnopqrstuvw")

Giriş teksti “Sezar Rubikondan geçmegi meýilleşdirýär!” "Zxbpxo fp mixkkfkd ql zolpp qeb Oryfzlk!" Dürli mümkinçilikleriň başga bir çalt mysalyny getirmek üçin, setir girizýän we teksti yzyna gaýtarmak üçin terjime funksiýasyny ulanýan demir funksiýasyny ýasadym, şol sanda ummautlary alýan ähli nyşanlary. Braýan Rasmusseniň “Pen” metal funksiýasyna serediň.

const metal = (str) => { yzyna terjime (str, "AOUaou", "ÄÖÜäöü"); }

“Motley Crue düzgünleri, daglaryň üstünde gaýa!” Teksti berilse, “Mötley Crüe rüles, röck ön düdes!” Elbetde, bu funksiýanyň her dürli parodiýa ulanylyşy bolup biler. Eger şol bolsaňyz, bu TVTropes makalasy size köp ylham bermeli. XPath bilen CSS ulanmak CSP saýlaýjylaryny XPath bilen bilelikde ulanmagyň esasy sebäbini ýadyňyzdan çykarmaň: CSS synpyň nämedigine gaty gowy düşünýär, XPath bilen edip boljak iň gowusy synp atributyny deňeşdirmekdir. Bu köp halatlarda işlär. Everöne kimdir biri .primaryLinks we .primaryLinks2 atly synplary döreden bir ýagdaýa düşmeli bolsaňyz we .primaryLinks synpyny almak üçin XPath ulanýan bolsaňyz, kynçylyklara duçar bolarsyňyz. Munuň ýaly manysyz zat ýok bolsa, XPath ulanarsyňyz. Peopleöne adamlaryň bu hili samsyk zatlary edýän ýerlerinde işländigimi gynandyrýaryn. Ine, CSS we XPath bilelikde ulanýan başga bir demo. Resminamanyň düwmesi däl kontekst düwüninde XPath işletmek üçin kod ulananymyzda näme bolýandygyny görkezýär. Braýan Rasmusseniň “Pen css” we “xpath” -laryny bilelikde görüň. CSS talaby .relatedarticles a bolup, bu iki elementi .relatedarticles synpyna bölünen bölüme alýar. Ondan soň üç sany "erbet" sorag, ýagny kontekst düwmesi hökmünde bu elementler bilen işledilende islän zadymyzy etmeýän talaplar. Näme üçin garaşyşyňyzdan başgaça hereket edýändiklerini düşündirip bilerin. Soralýan üç erbet sorag:

// text (): Resminamadaky ähli teksti görkezýär. // a / text (): resminamadaky baglanyşyklaryň içindäki ähli teksti görkezýär. ./a/text (): Netije bermeýär.

Bu netijeleriň sebäbi, kontekstiňiz CSS talapyndan yzyna gaýtarylan element bolsa-da, // ähli resminama garşy gelýär. Bu XPath-yň güýji; CSS düwünden ata-babasyna, soň bolsa şol atanyň doganyna baryp, şol doganyň nesline baryp bilmez. Emma XPath edip biler. Şol bir wagtyň özünde ./ nokat (.) Häzirki düwmäni aňladýan häzirki düwüniň çagalaryny soraýar, we öňe çyzgy (/) käbir çaga düwünlerine gitmegi aňladýar - atribut, element ýa-da tekst ýoluň indiki bölegi bilen kesgitlenýär. Emma CSS talaplary bilen saýlanan element ýok, şonuň üçin talap hem hiç zady yzyna gaýtarmaýar. Şol soňky demoda üç sany gowy sorag bar:

.// tekst (), ./text (), normalizasiýa-boşluk (./ tekst ()).

Kadalaşdyrmak-boşluk soragy XPath funksiýasynyň ulanylyşyny görkezýär, beýleki soraglara girizilen meseläni hem düzedýär. HTML şeýle gurluşly:

Selenium WebDriver bilen aýratynlyk synagyňyzy awtomatlaşdyrmak

Talap, tekst düwüniniň başynda we ahyrynda setir iýmitini gaýtaryp berýär,we normalizasiýa-giňişlik muny aýyrýar. Giriş XPath-dan başga bir zady yzyna gaýtarýan islendik XPath funksiýasyny ulanmak beýleki funksiýalara degişlidir. Aşakdaky demo birnäçe mysal görkezýär: Braýan Rasmusseniň “Pen xpath” funksiýalaryna serediň. Birinji mysalda üns bermeli meseläňizi görkezýär. Has takygy, aşakdaky kod:

document.queryXPaths ("substring-after (// a / @ href, 'https: //')");

... bir setiri gaýtarýar:

"www.smashingmagazine.com/2018/04/feature-testing-selenium-webdriver/"

Munuň manysy bar, şeýlemi? Bu funksiýalar massiwleri yzyna gaýtarman, ýeke setirleri ýa-da ýeke sanlary görkezýär. Funksiýany birnäçe netije bilen islendik ýerde işletmek diňe birinji netijäni berýär. Ikinji netije, hakykatdanam isleýän zadymyzy görkezýär:

document.queryCSSSelectors ("a") .queryXPaths ("substring-after (./@href,'https:// ')");

Iki setir massiwini gaýtaryp berýär:

["www.smashingmagazine.com/2018/04/feature-testing-selenium-webdriver/","www.smashingmagazine.com/2022/11/automated-test-result-improve-accessibility/"]

XPath funksiýalary edil JavaScript-däki funksiýalar ýaly ýerleşdirilip bilner. Şeýlelik bilen, “Smashing Magazine” URL URL gurluşyny bilýän bolsak, aşakdakylary edip bilerdik (şablon söz sözlerini ulanmak maslahat berilýär): `terjime et substring ( substring-soň (./@ href, 'www.smashingmagazine.com/') , 9), '/', '') `

Edýän zatlaryny düşündirýän teswirlere mätäçlik derejesinde birneme çylşyrymlaşýar: www.smashingmagazine.com/ -dan soň ähli URL salgysyny href atributyndan alyň, ilkinji dokuz simwoly aýyryň, soňundan öňe süýşmekden dynmak üçin öňe çyzgy (/) nyşanyny hiç zada terjime ediň. Netijeli massiw:

["aýratynlyk-synag-selen-web sürüjisi", "awtomatlaşdyrylan-synag-netijeler-gowulaşdyrmak-elýeterlilik"]

Has köp XPath ulanylyşy Synagda XPath hakykatdanam şöhle saçyp biler. Sebäbini görmek kyn däl, sebäbi XPath DOM-daky her bir elementi, DOM-nyň islendik ýerinden almak üçin ulanylyp bilner, CSS bolsa edip bilmeýär. Häzirki zaman gurluşyk ulgamlarynyň köpüsinde yzygiderli galan CSS synplaryna bil baglap bilmersiňiz, ýöne XPath bilen, DOM gurluşynyň üýtgemegine garamazdan elementiň tekst mazmunynyň nämedigi barada has ygtybarly gabat gelmegi başarýarys. Çydamly XPath synaglaryny geçirmäge mümkinçilik berýän usullar boýunça gözlegler geçirildi. Synaglaryň ýitip gitmeginden erbet zat ýok, diňe bir CSS saýlaýjysynyň bir zadyň adynyň üýtgedilmegi ýa-da aýrylmagy sebäpli işlemeýär. “XPath” birnäçe lokator çykarmakda hakykatdanam ajaýyp. Bir elemente gabat gelmek üçin XPath talaplaryny ulanmagyň birden köp usuly bar. CSS-de edil şonuň ýaly. Xöne XPath talaplary, yzyna gaýtarylýanlary çäklendirýän, has ähtimal oýunlaryň bolup biläýjek belli bir oýnuny tapmaga mümkinçilik berýän has maksatly görnüşde burawlap biler. Mysal üçin, dogan diwany derrew yzarlaýan diwiň içindäki belli bir h2 elementini yzyna gaýtarmak üçin XPath-dan peýdalanyp bileris, bu bolsa öz gezeginde maglumat-testID = "lider" atributy bolan çaga şekil elementini öz içine alýar:

bu sözbaşy alma

Bu sözbaşy hem almaň

Lideriň suraty üçin sözbaşy

Bu sorag: resminama.queryXPaths (` // div [ aşakdaky dogan :: div [1] / img [@ data-testID = 'lider'] ] / h2 / tekst () `);

Bularyň hemmesiniň bir ýere jemlenişini görmek üçin demo goýalyň: Braýan Rasmusseniň ruçka toplumy H2 soragyna serediň. Hawa, hawa. Synagda XPath ulanyp, islendik elemente mümkin bolan köp ýol bar. XSLT 1.0 Könelişmek Chrome toparynyň brauzerden XSLT 1.0 goldawyny aýyrmagy meýilleşdirýändigini irden aýdypdym. Bu möhümdir, sebäbi XSLT 1.0 resminamany üýtgetmek üçin XML gönükdirilen programmirlemäni ulanýar, bu bolsa öz gezeginde brauzerleriň köpüsinde tapylan XPath 1.0-e daýanýar. Şeýle bolanda, XPath-yň esasy komponentini ýitireris. Xöne synaglary ýazmak üçin XPath-yň hakykatdanam ajaýypdygyny göz öňünde tutanymda, umuman XPath-yň ýakyn wagtda ýok bolmagy ähtimal däl. Saidagny, adamlar aýrylanda bir aýratynlyk bilen gyzyklanýandygyny gördüm. Bu, elbetde, XSLT 1.0 könelişen ýagdaýynda dogry. “Hacker News” -da könelişmä garşy argumentler bilen baglanyşykly tutuş bir çekişme bolup geçýär. Postazgynyň özi XSLT bilen blog açmagyň çarçuwasyny döretmegiň ajaýyp mysalydyr. Sençekişmäni özüňiz okap bilersiňiz, ýöne JavaScript-iň şular ýaly ýagdaýlary çözmek üçin XLST üçin parlak hökmünde ulanyp boljakdygyna girýär. Şeýle hem, brauzerlerde JavaScript-iň Sakson XSLT, XQUERY we XPath dwigatelleriniň porty bolan SaxonJS ulanmalydygy baradaky teklipleri gördüm. Bu gyzykly pikir, esasanam Sakson-JS bu spesifikasiýalaryň häzirki wersiýasyny ýerine ýetirýänligi sebäpli, XPath ýa-da XSLT wersiýasyny 1.0-den ýokary ýerine ýetirýän brauzer ýok we XQuery-ny durmuşa geçirmeýän hiç bir brauzer ýok. Saksonikadaky Norm Tovey-Walsh, SaxonJS-iň arkasyndaky kompaniýa we Sakson motorynyň beýleki wersiýalary bilen habarlaşdym. Ol: "Islendik bir brauzer satyjysy, häzirki XML tehnologiýalaryny brauzere ornaşdyrmak üçin SaxonJS-ni başlangyç nokat hökmünde kabul etmek isleýän bolsa, biz olar bilen ara alyp maslahatlaşmaga begenýäris." - Norm Towi-Walsh

Alsoöne goşdy: "Kimdir biri SaxonJS-i häzirki görnüşinde alyp, ony brauzerde üýtgetmezden taşlamak iň oňat çemeleşme diýip pikir etse, gaty geň galardym. Brauzer satyjysy, brauzeri gurýandyklary sebäpli integrasiýa" daşardan "has çuňňur derejede çemeleşip biler." - Norm Towi-Walş.

Towi-Walşyň bellikleriniň XSLT ýatyryş yglan edilmeginden bir hepde öň gelendigini bellemelidiris. Netije Men dowam edip bilerin. Thisöne munuň XPath-yň güýjüni görkezendigini we ajaýyp zatlara ýetmek üçin nädip ulanmalydygyny görkezýän köp sanly mysal berendigine umyt edýärin. Brauzer bukjasyndaky köne tehnologiýalaryň ajaýyp mysaly, häzirki wagtda-da köp peýdasy bar, hatda onuň bardygyny hiç wagt bilmeseňizem ýa-da oňa ýetmek hakda pikir etmeseňizem. Goşmaça okamak

Maroun Aýli, oususuf Bakouny, Nader Jalloul we Rima Kilany tarapyndan ýazylan “Awtomatlaşdyrylan web synaglarynyň tebigy dil bilen durnuklylygyny ýokarlandyrmak” (ACM Sanly kitaphanasy) Bu makala çydamly synaglary ýazmak üçin köp XPath mysal berýär. XPath (MDN) XPath-yň işleýşi barada tehniki düşündiriş isleseňiz, başlamak üçin ajaýyp ýer. XPath Tutorial (ZVON) Köp mysallaryň we düşnükli düşündirişleriň kömegi bilen bu okuw gollanmasyny öz öwrenişimde iň peýdaly diýip tapdym. XPatherBu interaktiw gural, kod bilen göni işlemäge mümkinçilik berýär.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free