Ndibe kuphuhliso lwangaphambili ixesha elide ngokwaneleyo ukuze ndibone umkhwa ukutyhubela iminyaka: abaphuhlisi abancinci basebenza ngeparadigm entsha yenkqubo ngaphandle kokuqonda umxholo wayo wembali. Kuyaqondakala, ngokuqinisekileyo, ukungazi nto. Iwebhu yindawo enkulu kakhulu enezakhono ezahlukeneyo kunye nezinto ezikhethekileyo, kwaye asisoloko sisazi into esingayaziyo. Ukufunda kule ntsimi luhambo oluqhubekayo kunokuba into eyenzekayo kanye kwaye iphele. Umzekelo: Omnye kwiqela lam ubuze ukuba kuyenzeka na ukuxelela ukuba abasebenzisi bayayishiya ithebhu ethile kwi-UI. Ndibonise umsitho weJavaScript ngaphambi kokukhulula. Kodwa abo baye bajongana nale nto ngaphambili bayazi ukuba oku kunokwenzeka ngenxa yokuba baye bafumana izilumkiso malunga nedatha engagcinwanga kwezinye iisayithi, apho ukulayisha kwangaphambili kuyimeko yokusetyenziswa eqhelekileyo. Ndikwakhombe iphephaFihla kunye nokubonakalaShintsha imicimbi kumlingane wam ngomlinganiselo olungileyo. Ndazi njani ngalonto? Kuba yeza kwenye iprojekthi, hayi kuba ndifundele kuyo xa ndiqala ukufunda iJavaScript. Inyani yeyokuba izikhokelo zanamhlanje zangaphambili zimi emagxeni ezikhulu zetekhnoloji ezandulelayo. Ziziqhelo zophuhliso olungabonakaliyo, rhoqo amava angcono omphuhlisi anciphisa, okanye ade aphelise, imfuneko yokwazi okanye uchukumise into ebikade iyimiba ephambili ebalulekileyo ekufuneka wonke umntu eyazi. Qwalasela i-CSS Object Model (CSSOM). Unokulindela ukuba nabani na osebenza kwi-CSS kunye neJavaScript uneqela lezandla kumava e-CSSOM, kodwa akusoloko kunjalo. Kwakukho iprojekthi ye-React yesayithi ye-e-commerce endisebenze kuyo apho sifuna ukulayisha i-stylesheet kumnikezeli wentlawulo okhethiweyo ngoku. Ingxaki yayikukuba icwecwe lesimbo lalilayisha kwiphepha ngalinye xa lalifuneka ngokwenene kwiphepha elithile. Umphuhlisi onikwe umsebenzi wokwenza oku ukuba kwenzeke akazange alayishe icwecwe lesitayile ngamandla. Kwakhona, oku kuyaqondakala ngokupheleleyo xa i-React itsalela kude kwindlela yesiko onokuthi ufikelele kuyo. I-CSSOM ayisiyiyo into oyidingayo kumsebenzi wakho wemihla ngemihla. Kodwa kuya kufuneka ukuba unxibelelane nayo ngaxa lithile, nokuba kukwimeko enye. La mava andikhuthaze ukuba ndibhale eli nqaku. Zininzi izinto ezikhoyo zewebhu kunye nobuchwepheshe obukhoyo endle onokuthi ungaze uchukumise ngokuthe ngqo kumsebenzi wakho wemihla ngemihla. Mhlawumbi umtsha ngokufanelekileyo kuphuhliso lwewebhu kwaye awazi nto ngayo ngenxa yokuba ugxile ekutsalweni kwesakhelo esithile esingafuniyo ukuba uyazi nzulu, okanye nokuba uyazi. Ndithetha ngokuthe ngqo nge-XML, uninzi lwethu olulwaziyo ukuba lulwimi lwakudala olungahlukanga kwaphela kwi-HTML. Ndizisa oku ngenxa yeengxoxo zeWHATWG zakutsha nje ezicebisa ukuba i-chunk ebalulekileyo ye-XML stack eyaziwa ngokuba yinkqubo ye-XSLT kufuneka isuswe kwizikhangeli. Olu lolo hlobo kanye lwetekhnoloji endala, esele sinabo kangangeminyaka enokuthi isetyenziselwe into enokwenzeka njengemeko yeCSSOM eyayikuyo iqela lam. Ngaba ukhe wasebenza nge-XSLT ngaphambili? Makhe sibone ukuba sithembele kakhulu kule teknoloji yakudala kwaye sisebenzise iimpawu zayo ngaphandle komxholo we-XML ukujongana neengxaki zehlabathi zangempela namhlanje. XPath: The Central API Itekhnoloji ye-XML ebaluleke kakhulu mhlawumbi eyona nto iluncedo ngaphandle kwembono ye-XML ethe ngqo yi-XPath, ulwimi lombuzo okuvumela ukuba ufumane nayiphi na i-node okanye uphawu kumthi wokuphawula kunye nengcambu enye. Ndinothando lobuqu lwe-XSLT, kodwa oko kukwaxhomekeke kwi-XPath, kwaye uthando lobuqu kufuneka lubekelwe ecaleni ngokubaluleka komgangatho. Ingxoxo yokususa i-XSLT ayikhankanyi nayiphi na i-XPath, ngoko ke ndicinga ukuba isavumelekile. Kulungile kuba i-XPath yeyona API ephambili kunye neyona nto ibalulekileyo kule suti yetekhnoloji, ngakumbi xa uzama ukufumana into enokusetyenziswa ngaphandle kokusetyenziswa kweXML eqhelekileyo. Kubalulekile kuba, ngelixa abakhethi beCSS banokusetyenziselwa ukufumana uninzi lwezinto kwiphepha lakho, abanakuzifumana zonke. Ngaphaya koko, abakhethi beCSS abanakusetyenziswa ukufumana into esekwe kwindawo ekuyo ngoku kwiDOM. XPath inkonkxa. Ngoku, abanye benu abafunda le nto banokuyazi i-XPath, kwaye abanye basenokungayazi. I-XPath yindawo entle kakhulu yetekhnoloji, kwaye andinakukwazi ukufundisa zonke iziseko kwaye ndikubonise izinto ezipholileyo onokuthi uzenze kwinqaku elinye elinje. Ndizamile ukubhala eli nqaku, kodwa umndilili wokupapashwa kweMagazini ye-Smashing awuhambi ngaphezulu kwamagama angama-5,000. Ndandisele ndikwi more thanAmagama angama-2,000 ngelixa kuphakathi nje kweziseko. Ke, ndiza kuqalisa ukwenza izinto ezipholileyo nge-XPath kwaye ndikunike amakhonkco onokuwasebenzisa kwizinto ezisisiseko ukuba ufumanisa le nto inomdla. Ukudibanisa i-XPath kunye ne-CSS I-XPath inokwenza izinto ezininzi abakhethi beCSS abangakwaziyo ukuzenza xa bebuza izinto. Kodwa abakhethi beCSS banokwenza izinto ezimbalwa i-XPath engenakho, ezizezi, izinto zokubuza ngegama leklasi.

CSS XPath .myClass /*[iqulathe(@class, "myClass")]

Kulo mzekelo, iCSS ibuza imibuzo equlathe i-.myClassname yeklasi. Okwangoku, umzekelo we-XPath ubuza izinto eziqulethe iklasi yophawu olunomtya othi "myClass". Ngamanye amazwi, ikhetha izinto ezine-myClass kulo naliphi na uphawu loyelelwano, kuquka izakhi ezinegama lodidi .myClass - kunye nezinto ezino"myClass" kumtya, njenge .myClass2. I-XPath ibanzi ngaloo ndlela. Ngoko, hayi. Andicebisi ukuba kufuneka siphose i-CSS kwaye siqale ukukhetha zonke izinto nge-XPath. Ayisiyo ngongoma leyo. Inqaku lelokuba i-XPath inokwenza izinto i-CSS engenako kwaye isenokuba luncedo kakhulu, nangona itekhnoloji yakudala kwi-browser stack kwaye isenokungabonakali ngokucacileyo ekuqaleni. Masisebenzise iitekhnoloji zombini kunye kungekuphela nje kuba sinako, kodwa ngenxa yokuba siza kufunda okuthile malunga ne-XPath kwinkqubo, siyenza esinye isixhobo kwisitaki sakho-esinye onokuthi ubungayazi ibikho ngalo lonke ixesha! Ingxaki kukuba indlela yeJavaScript's document.evaluate kunye neendlela ezahlukeneyo zokukhetha imibuzo esizisebenzisayo kunye neCSS APIs yeJavaScript azihambelani. Ndenze i-API yokubuza ehambelanayo ukuze siqalise, nangona ndivunyiwe, andizange ndibeke ingcinga eninzi kuyo kuba kukuhamba kwinto esiyenzayo apha. Nanku umzekelo olula osebenzayo womakhi wombuzo onokuphinda usetyenziswe: Bona iPen queryXPath [ifolokhwe] nguBryan Rasmussen. Ndongeze iindlela ezimbini kwinto yoxwebhu: queryCSSSelectors (eyi querySelectorAll) kunye queryXPaths. Zombini ezi zibuyisela into ye-queryResults:

{ uhlobo lombuzo: iindawo | umtya | inombolo | i-boolean, iziphumo: naziphi na[] // html iziqalelo, xml izinto, imitya, amanani, booleans, queryCSSSelectors: (umbuzo: umtya, lungisa: boolean) => queryResults, queryXpaths: (umbuzo: umtya, lungisa: boolean) => queryResults }

I-queryCSSSelectors kunye ne-queryXpaths imisebenzi iqhuba umbuzo obanike wona ngaphezulu kwezinto ezikuluhlu lweziphumo, nje ukuba uluhlu lweziphumo lukuhlobo lweendawo, kunjalo. Kungenjalo, iyakubuya i-queryResult ngoluhlu olungenanto kunye nodidi lweenodi. Ukuba ipropathi yolungiso imiselwe kwinyani, imisebenzi iya kutshintsha eyayo imibuzoIziphumo. Makungaze naphantsi kwazo naziphi na iimeko oku kusetyenziswe kwindawo yemveliso. Ndiyenza ngale ndlela ukubonisa iziphumo ezahlukeneyo zokusebenzisa imibuzo emibini ye-APIs kunye. Umzekelo Imibuzo Ndifuna ukubonisa imizekelo embalwa yemibuzo eyahlukeneyo ye-XPath ebonisa ezinye zezinto ezinamandla abanokuzenza kunye nendlela ezinokusetyenziswa ngayo endaweni yezinye iindlela. Umzekelo wokuqala ngu //li/text(). Oku kuthandabuza zonke ii elementi kwaye ibuyisela iindawo zazo zokubhaliweyo. Ke, ukuba besinokubuza le HTML ilandelayo:

  • enye
  • ezimbini
  • ntathu

...nantsi into ebuyiswayo:

{"queryType":"xpathValuate","iziphumo":["enye","two","three"],"resultType":"umtya"}

Ngamanye amazwi, sifumana olu luhlu lulandelayo: ["enye","zimbini","ntathu"]. Ngesiqhelo, ubuya kubuza ukuba iziqalelo ze-li zifumane oko, jika isiphumo sombuzo sibe kuluhlu, imephu uluhlu, kwaye ubuyisele inodi yokubhaliweyo yento nganye. Kodwa sinokukwenza oko ngokuthe kratya nge-XPath: document.queryXPaths("//li/text()").iziphumo.

Qaphela ukuba indlela yokufumana inodi yokubhaliweyo kukusebenzisa okubhaliweyo (), ekhangeleka njengotyikityo lomsebenzi — kwaye kunjalo. Ibuyisela i node yokubhaliweyo ye element. Kumzekelo wethu, kukho izinto ezintathu ze-li kuphawulo, nganye iqulethe okubhaliweyo ("enye", "ezimbini", kunye "nezintathu"). Makhe sijonge omnye umzekelo wombuzo wesicatshulwa (). Cinga ukuba olu luphawu lwethu: Ngena

Masibhale umbuzo obuyisela ixabiso lophawu loyelelwano lwe href: document.queryXPaths("//a[text() = 'Ngena']/@href").iziphumo.

Lo ngumbuzo we-XPath kuxwebhu lwangoku, njengomzekelo wokugqibela, kodwa ngeli xesha sibuyisela uphawu lwe- href lwekhonkco (into) equlethe okubhaliweyo "Ngena". Oyena ubuyileisiphumo sithi ["/login.html"]. XPath Functions Overview Kukho inani lemisebenzi ye-XPath, kwaye mhlawumbi awuqhelananga nayo. Zininzi, ndicinga ukuba, kufanelekile ukwazi ngazo, kubandakanya oku kulandelayo:

iqala-ngeUkuba okubhaliweyo kuqala ngomnye umzekelo wokubhaliweyo, kuqala-nge(@href, 'http:') ibuyisela inyaniso ukuba uphawu loyelelwano lwe href luqala ngo http:. iquketheUkuba umbhalo uqulathe omnye umzekelo wombhalo othile, uqulathe(umbhalo(), "Smashing Magazine") ubuyisela inyani ukuba indawo yombhalo iqulethe amagama athi "Smashing Magazine" kuyo naphi na. countIbuyisela ubalo lokuba zingaphi iimatshisi ezikhoyo kumbuzo. Umzekelo, count(//*[iqala-nge(@href, 'http:']) ibuyisela ubalo lokuba mangaphi amakhonkco kwindawo yomxholo aneziqalelo ezinophawu lwe- href oluqulathe okubhaliweyo kuqala nge http:. Umtya osezantsiIsebenza njengeJavaScript esezantsi, ngaphandle kokuba ugqithise umtya njengempikiswano. Umzekelo, umtya ongezantsi ("umbhalo wam", 2, 4) ubuyisela "y t". substring-beforeIbuyisela indawo yomtya phambi komnye umtya. Umzekelo, substing-before("umbhalo wam", " ") ubuyisela "yam". Ngokufanayo, substring-before("hi","bye") ibuyisela umtya ongenanto. substring-afterIbuyisela indawo yomtya emva komnye umtya. Umzekelo, substing-after("umbhalo wam", " ") ubuyisela "umbhalo". Ngokufanayo, substring-after("hi","bye") ibuyisela umtya ongenanto. normalize-spaceIbuyisela umtya wempikiswano enesithuba esimhlophe esiqheleke ngokuhluba isithuba esimhlophe esikhokelayo kunye esisemva kunye nokulandelelanisa ulandelelwano lweempawu zesithuba esimhlophe ngesithuba esinye. ayiBuyisi i-boolean eyinyani ukuba ingxoxo bubuxoki, kungenjalo bubuxoki. trueReturns boolean true. falseIbuyisela i-boolean bubuxoki. concatInto enye njengeJavaScript concat, ngaphandle kokuba awuyisebenzisi njengendlela kuluhlu. Endaweni yoko, ubeka zonke iintambo ofuna ukuzidibanisa. Umtya-ubudeOku akufani nobude bomtya weJavaScript, kodwa endaweni yoko ibuyisela ubude bomtya obunikiweyo njengempikiswano. translateLe ithatha umtya kwaye itshintshe impikiswano yesibini ukuya kwimpikiswano yesithathu. Umzekelo, translate("abcdef", "abc", "XYZ") iziphumo zeXYZdef.

Ngaphandle kwale misebenzi ithile ye-XPath, kukho inani leminye imisebenzi esebenza ngokufanayo nabalingane babo beJavaScript - okanye abalingane kulo naluphi na ulwimi lwenkqubo-onokuthi mhlawumbi ulufumane luluncedo, njengomgangatho, isilingi, umjikelo, isixa, njalo njalo. Le demo ilandelayo ibonisa umsebenzi ngamnye kule: Jonga Pen XPath imisebenzi yamanani [ngefolokhwe] nguBryan Rasmussen. Qaphela ukuba, njengoninzi lwemisebenzi yokuguqula umtya, uninzi lwamanani luthatha igalelo elinye. Oku kunjalo, kuba kufanele ukuba zisetyenziselwe ukubuza, njengakumzekelo wokugqibela we-XPath: //li[umgangatho(umbhalo()) > 250]/@val

Ukuba uyazisebenzisa, njengoko uninzi lwemizekelo isenza, uya kugqiba uyisebenzise kwindawo yokuqala ehambelana nomendo. Kukwakho nolunye uhlobo lwemisebenzi yoguqulelo onokuthi uyiphephe kuba iJavaScript sele ineengxaki zayo zoguqulelo. Kodwa kunokubakho amaxesha apho ufuna ukuguqula umtya kwinani ukuze ulijonge ngokuchasene nelinye inani. Imisebenzi emisela udidi lwento yi boolean, inani, umtya, kunye nodi. Ezi ziinkcukacha ezibalulekileyo ze-XPath. Kwaye njengoko unokucinga, uninzi lwale misebenzi lunokusetyenziswa kwiintlobo zedatha ezingezizo iindawo ze-DOM. Umzekelo, umtya osezantsi emva kokuthatha umtya njengoko sele siwugqumile, kodwa inokuba ngumtya ovela kuphawu lwe- href. Isenokuba ngumtya nje:

const testSubstringAfter = document.queryXPaths("substring-after('hello world',' ')");

Ngokucacileyo, lo mzekelo uya kusinika umva uluhlu lweziphumo njenge ["ihlabathi"]. Ukubonisa oku kusebenza, ndenze iphepha ledemo ndisebenzisa imisebenzi echasene nezinto ezingezizo iindawo ze-DOM: Bona iPen queryXPath [ifolokhwe] nguBryan Rasmussen. Kufuneka uqaphele umba omangalisayo womsebenzi woguqulo, othi ukuba unobumba kwimpikiswano yesibini (oko kukuthi, uluhlu lwamagama ofuna ukuguqulelwa kuwo) kwaye akukho mlinganiswa athelekisekayo onokuguqulela kuwo, loo mlinganiswa uyasuswa kwimveliso. Ngoko ke, oku:

translate('Molo, Igama lam ndingu-Inigo Montoya, ubulele utata, lungiselela ukufa','abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,','*')

...iziphumo kumtya, kuquka izithuba: [" * * ** "]

Oku kuthetha ukuba unobumba “a” uguqulelwa kwiinkwenkwezi (*), kodwa wonke omnye unobumba ongenayo inguqulelo enikwe umtya ekujoliswe kuwo uyasuswa ngokupheleleyo. Isithuba esimhlophe kuphela esiselephakathi kwamagama “a” aguqulelweyo. Emva koko, lo mbuzo:

translate('Molo, Igama lam ndingu-Inigo Montoya, ubulele utata, lungiselela ukufa','abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,','**********************************************')")

...ayinangxaki kwaye ivelisa iziphumo ezijongeka ngolu hlobo:

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

Isenokukubetha ukuba akukho ndlela ilula kwiJavaScript yokwenza kanye okwenziwa ngumsebenzi woguqulo lwe-XPath, nangona kwiimeko ezininzi zokusetyenziswa, buyisela yonke into enezibonakalisi eziqhelekileyo zinokuyiphatha. Ungasebenzisa indlela enye endiyibonisileyo, kodwa oko kusezantsi ukuba konke okufunayo kukuguqulela imitya. Le demo ilandelayo isonga umsebenzi woguqulo we-XPath ukubonelela ngoguqulelo lweJavaScript: Jonga umsebenzi wokuguqulela iPeni [ifolokhwe] nguBryan Rasmussen. Ungayisebenzisa phi into enje? Qwalasela uCaesar Cipher encryption ene-offset yeendawo ezintathu (umzekelo, uguqulelo oluntsonkothileyo oluphezulu ukusuka ngowama-48 B.C.):

translate("UKesare uceba ukuwela iRubicon!", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "XYZABCDEFGHIJKLMNOPQRSTUVWxyzabcdefghijklmnopqrstuvw")

Umbhalo wegalelo "uKesare uceba ukuwela iRubicon!" iziphumo kwi "Zxbpxo fp mixkkfkd ql zolpp qeb Oryfzlk!" Ukunika omnye umzekelo okhawulezayo wamathuba ahlukeneyo, ndenze umsebenzi wesinyithi othatha igalelo lomtya kwaye usebenzisa umsebenzi wokuguqulela ukubuyisela umbhalo, kubandakanywa bonke abalinganiswa abathatha i-umlauts. Jonga umsebenzi wentsimbi yePen [ifolokhwe] nguBryan Rasmussen.

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

Kwaye, ukuba unikwe isicatshulwa esithi "Motley Crue rules, rock on dudes!", Ibuyisela "Mötley Crüe rüles, röck ön düdes!" Ngokucacileyo, umntu unokuba nazo zonke iintlobo zokusetyenziswa kwe-parody yalo msebenzi. Ukuba nguwe, ke eli nqaku leTVTropes kufuneka likunikeze inkuthazo eninzi. Ukusebenzisa i-CSS Nge-XPath Khumbula esona sizathu sethu siphambili sokusebenzisa abakhethi be-CSS kunye ne-XPath: i-CSS iyaqonda kakhulu ukuba yintoni na iklasi, ngelixa eyona nto ingcono onokuyenza nge-XPath kukuthelekisa umtya wophawu lweklasi. Oko kuya kusebenza kwiimeko ezininzi. Kodwa ukuba ubunokuzifumana ukwimeko apho, yithi, umntu wenze iiklasi ezinegama .primaryLinks kunye .primaryLinks2 kwaye ubusebenzisa iXPath ukufumana iklasi ye-.primaryLinks, ngoko ubuya kuba neengxaki. Logama nje kungekho nto isileyo njengaleyo, uya kusebenzisa i-XPath. Kodwa ndilusizi ukuxelela ukuba ndiye ndasebenza kwiindawo apho abantu benza ezo zinto zisileyo. Nantsi enye idemo esebenzisa iCSS kunye neXPath kunye. Ibonisa okwenzekayo xa sisebenzisa ikhowudi ukuqhuba i-XPath kwindawo yomxholo engeyiyo i-node yoxwebhu. Bona iPen css kunye xpath kunye [ifolokhwe] nguBryan Rasmussen. Umbuzo weCSS uthi .amanqaku ahambelanayo a, alanda amasuntswana amabini kwidiv eyabelwe iklasi .amanqaku anxulumeneyo. Emva koko yimibuzo emithathu “embi”, oko kukuthi, imibuzo engenzi le nto sifuna ukuba bayenze xa bebaleka nezi zinto njengenodi yomxholo. Ndiyakwazi ukucacisa ukuba kutheni beziphatha ngendlela eyahlukileyo kunokuba unokulindela. Imibuzo emithathu embi ebuzwayo yile:

// okubhaliweyo (): Ibuyisela konke okubhaliweyo kuxwebhu. //a/text(): Ibuyisela wonke umbhalo ongaphakathi kwikhonkco kuxwebhu. ./a/text(): Ayibuyi ziphumo.

Isizathu sezi ziphumo kukuba ngelixa umxholo wakho uziziqalelo ezibuyisiweyo ukusuka kumbuzo weCSS, // iya ngokuchasene noxwebhu lonke. Oku kungamandla eXPath; I-CSS ayinakusuka kwi-node inyuke iye kukhokho ize iye kumntakwabo waloo khokho, kwaye yehle iye kwinzala yaloo mntakwenu. Kodwa i-XPath inako. Ngeli xesha, ./ ibuza abantwana benodi yangoku, apho ichaphaza (.) imele indawo yangoku, kunye ne-front slash (/) imele ukuya kwindawo ethile yomntwana — nokuba sisiluphawu, isiqalelo, okanye isicatshulwa simiselwa yinxalenye elandelayo yendlela. Kodwa akukho mntwana into ekhethwe ngumbuzo weCSS, ngoko ke loo mbuzo nawo awubuyiseli nto. Kukho imibuzo emithathu elungileyo kule demo yokugqibela:

.//umbhalo (), ./umbhalo(), lungisa-isithuba(./text()).

Umbuzo we-normalization-space ubonisa usetyenziso lomsebenzi we-XPath, kodwa kwakhona ulungisa ingxaki ebandakanyiweyo kweminye imibuzo. I-HTML yakhiwe ngolu hlobo:

Ukuziqhelanisa noVavanyo lweNdawo yakho ngeSelenium WebDriver

Umbuzo ubuyisela isondlo somgca ekuqaleni nasekupheleni kwendawo yombhalo,kwaye yesiqhelo-isithuba isusa oku. Ukusebenzisa nawuphi na umsebenzi we-XPath obuyisela enye into ngaphandle kwe-boolean ngegalelo le-XPath isebenza kweminye imisebenzi. Le demo ilandelayo ibonisa inani lemizekelo: Jonga imisebenzi Pen xpath imizekelo [ifolokhwe] nguBryan Rasmussen. Umzekelo wokuqala ubonisa ingxaki ekufuneka uyilumkele. Ngokukodwa, le khowudi ilandelayo:

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

…ibuyisela umtya omnye:

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

Iyavakala, akunjalo? Le misebenzi ayibuyiseli uluhlu kodwa kunemitya enye okanye amanani enye. Ukwenza umsebenzi naphi na ngeziphumo ezininzi kubuyisela kuphela isiphumo sokuqala. Isiphumo sesibini sibonisa eyona nto siyifunayo:

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

Ebuyisela uluhlu lweentambo ezimbini:

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

Imisebenzi ye-XPath inokwakhiwa njengeemisebenzi kwiJavaScript. Ke, ukuba siyasazi i-URL ye-URL ye-Smashing Magazine, singenza oku kulandelayo (ukusebenzisa itemplate literals kuyacetyiswa): `guqulela ( umtya osezantsi( umtya omncinci-emva(./@href, ‘www.smashingmagazine.com/') ,9), '/','')`

Oku kuya kuntsokotha kakhulu kangangokuba ifuna amagqabantshintshi achaza into ayenzayo: thatha yonke i-URL ukusuka kuphawu lwe- href emva www.smashingmagazine.com/, susa oonobumba abalithoba bokuqala, emva koko uguqulele isileshi sangaphambili (/) umlinganiswa ukuba ungabikho ukuze ukhuphe isiphelo sokusika esiya phambili. Uluhlu olunesiphumo:

["uvavanyo-uvavanyo-selenium-webdriver","automated-test-results-iphucula-ufikelelo"]

Iimeko ezingakumbi zokuSebenzisa i-XPath I-XPath inokukhanya ngokwenene kuvavanyo. Isizathu akunzima ukusibona, njengoko i-XPath ingasetyenziselwa ukufumana yonke into kwi-DOM, ukusuka kuyo nayiphi na indawo kwi-DOM, ngelixa i-CSS ayinakho. Awunakuthembela kwiiklasi ze-CSS ezihlala zingaguquguquki kwiinkqubo ezininzi zokwakha zale mihla, kodwa nge-XPath, siyakwazi ukwenza ungqamaniso olomeleleyo malunga nokuba yintoni umxholo wombhalo wento, nokuba uthini na utshintsho lwe-DOM. Kubekho uphando kubuchule obukuvumela ukuba wenze iimvavanyo zokuqina ze-XPath. Akukho nto imbi kunokuba uvavanyo luphume kwaye lusilele ngenxa yokuba umkhethi weCSS akasasebenzi ngenxa yokuba kukho into ethiywe ngokutsha okanye isusiwe. I-XPath nayo ilungile ngokwenene ekutsalweni kwendawo ezininzi. Kukho ngaphezu kwendlela enye yokusebenzisa imibuzo ye-XPath ukutshatisa into ethile. Kuyafana nakwiCSS. Kodwa imibuzo ye-XPath inokungena kwizinto ngendlela ejolise ngakumbi ethintela oko kubuyiswayo, ikuvumela ukuba ufumane umdlalo othile apho kunokubakho ukuhambelana okunokwenzeka. Ngokomzekelo, sinokusebenzisa i-XPath ukubuyisela into ethile ye-h2 equlethwe ngaphakathi kwe-div elandela ngokukhawuleza i-div yabantakwabo, ephethe into yomfanekiso womntwana kunye ne-data-testID = "inkokeli" uphawu kuyo:

ungawufumani lo mxholo

Ungasifumani nesi sihloko

Iheda yomfanekiso oyinkokeli

Lo ngumbuzo: uxwebhu.queryXPaths(` //div[ umntakwenu olandelayo::div[1] /img[@data-testID='inkokeli'] ] /h2/ umbhalo() `);

Masilahle idemo ukuze sibone ukuba zonke zidibana njani: Jonga iPen Complex H2 Umbuzo [ofakwe ngefolokhwe] nguBryan Rasmussen. Ngoko, ewe. Zininzi iindlela ezinokwenzeka kuyo nayiphi na into kuvavanyo usebenzisa i-XPath. XSLT 1.0 Ukwehla Nditshilo kwangethuba ukuba iqela leChrome liceba ukususa inkxaso yeXSLT 1.0 kwisiphequluli. Oku kubalulekile kuba i-XSLT 1.0 isebenzisa inkqubo egxininise ye-XML yokuguqulwa kwamaxwebhu, ngokuphindaphindiweyo, ixhomekeke kwi-XPath 1.0, eyona nto ifumaneka kwiiphequluli ezininzi. Xa oko kusenzeka, siya kuphulukana necandelo eliphambili le-XPath. Kodwa ngenxa yokuba i-XPath ilungile ngokwenene kwiimvavanyo zokubhala, ndifumanisa ukuba akunakwenzeka ukuba i-XPath iyonke iya kunyamalala nanini na kungekudala. Oko kuthethiweyo, ndiye ndaqaphela ukuba abantu baba nomdla kwinqaku xa lisusiwe. Kwaye yinyani leyo kwimeko ye-XSLT 1.0 yokurhoxiswa. Kukho ingxoxo yonke eyenzekayo kwiHacker News egcwele iingxoxo ezichasene nokurhoxa. Isithuba ngokwaso ngumzekelo omhle wokudala isakhelo sokubhloga nge-XSLT. Wenaunokuzifundela ingxoxo, kodwa ingena kwindlela iJavaScript enokusetyenziswa njengeshim ye XLST ukusingatha ezo ndidi zamatyala. Ndiphinde ndabona iingcebiso ukuba iibrowser kufuneka zisebenzise i-SaxonJS, eyi-port ye-JavaScript's Saxon XSLT, XQUERY, kunye neenjini ze-XPath. Lo ngumbono onomdla, ngakumbi njengoko i-Saxon-JS isebenzisa inguqulelo yangoku yezi nkcukacha, ngelixa kungekho mkhangeli zincwadi osebenzisa nayiphi na inguqulelo ye-XPath okanye i-XSLT ngaphaya kwe-1.0, kwaye akukho namnye osebenzisa i-XQuery. Ndafikelela kuNorm Tovey-Walsh eSaxonica, inkampani emva kweSaxonJS kunye nezinye iinguqulelo zenjini yeSaxon. Wathi: "Ukuba nawuphi na umthengisi webrawuza ebenomdla wokuthatha iSaxonJS njengendawo yokuqala yokudibanisa itekhnoloji yeXML yanamhlanje kwibhrawuza, singavuya ukuyixoxa nabo." -Norm Tovey-Walsh.

Kodwa kwakhona yongeza: "Ndiya kumangaliswa kakhulu ukuba nabani na ucinga ukuba ukuthatha i-SaxonJS kwifom yayo yangoku kwaye uyilahle kwi-browser yokwakha engatshintshiyo iya kuba yindlela efanelekileyo. Umthengisi we-browser, ngokwendalo yokuba bakhe isiphequluli, banokusondela ekudityanisweni kwinqanaba elinzulu kakhulu kunokuba singakwazi 'ukusuka ngaphandle'.”—Norm Tovey-Walsh.

Kuyafaneleka ukuba uqaphele ukuba izimvo zikaTovey-Walsh zafika malunga neveki ngaphambi kokuba i-XSLT ibhengezwe. Ukuqukumbela Ndingaqhubeka ndiqhubeke. Kodwa ndiyathemba ukuba oku kubonisile amandla e-XPath kwaye kukunike imizekelo emininzi ebonisa indlela yokuyisebenzisa ukufezekisa izinto ezinkulu. Ngumzekelo ogqibeleleyo wetekhnoloji yakudala kwisitaki sebrawuza esenento eninzi eluncedo namhlanje, nokuba awuzange uyazi ukuba ikhona okanye awuzange ucinge ukuyifikelela. UFundo olongezelelweyo

"Ukuphucula ukuQiniseka kweeMvavanyo zeWebhu eziSebenzayo ngoLwimi lweNdalo" (i-ACM Digital Library) nguMaroun Ayli, uYoussef Bakouny, uNader Jalloul, kunye noRima Kilany Eli nqaku libonelela ngemizekelo emininzi ye-XPath yokubhala iimvavanyo ezizinzileyo. I-XPath (MDN)Le yeyona ndawo ibalaseleyo onokuthi uqalise kuyo ukuba ufuna ingcaciso yobugcisa echaza indlela esebenza ngayo i-XPath. I-XPath Tutorial (ZVON) Ndifumene esi sifundo siluncedo kakhulu ekufundeni kwam, ngenxa yobutyebi bemizekelo kunye neengcaciso ezicacileyo. XPatherEsi sixhobo esisebenzisanayo sikuvumela ukuba usebenze ngokuthe ngqo ngekhowudi.

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