Unayñan ñawpaq-tukuy wiñachiypi karqani huk tendenciata rikunaypaq watakunapi: aswan wayna paqarichiqkuna huk musuq paradigma programacionwan llamk’achkanku mana chaymanta contexto histórico nisqamanta hamut’aspa. Arí, allinta entiendenapaqmi imatapas mana yachayqa. Web nisqaqa ancha hatunmi imaymana yachaykunawan, especialidadkunawan ima, manataqmi sapa kutichu yachayku mana yachasqaykutapas. Kay llamkaypi yachayqa puririq puriymi, manam huk kutilla pasaspa tukukuqchu. Caso en punto: Pipas equipoypi tapurqa sichus atikunman willayta sichus usuariokuna huk pestaña particularmanta UI kaqpi karunchakunku. JavaScript’s beforeunload ruwayta rikuchirqani. Ichaqa pikunachus kayta ñawpaqta atiparqanku yachanku kayqa atikun imaraykuchus paykuna huk sitiokunapi mana waqaychasqa datokunamanta alertaswan tupachisqa karqanku, chaypaq beforeunload huk típico caso de uso kaq. Hinallataqmi allin tupuypaq llamkaqmasiyman p'anqaPakakuy chaymanta rikuyTikray ruwaykunata rikuchirqani. ¿Imaynatataq chaymanta yacharqani? Huk proyectopi hamusqanrayku, mana chaymanta JavaScript qallariypi yachachkaptiy chaymanta estudiasqayraykuchu. Chiqapqa kunan pacha front-end marcokuna sayachkanku ñawpaq tecnologia hatun empresakunapa hombronpi. Paykunaqa wiñariy ruwaykunata abstraenku, sapa kuti aswan allin paqarichiqniyuq experienciapaq mayqinchus pisiyachin, utaq chinkachinpas, yachay utaq llamiy necesidadta imachus ñawpaqmantapacha ñawpaq-tukuy hamut'aykuna esencial karqan llapa runa ichapas yachananku tiyan. CSS Objeto Modelo (CSSOM) nisqapi yuyaykuy. Suyakuwaqmi pillapas CSS chaymanta JavaScript kaqpi llamk’aq huk qutu makiwan ruwasqa CSSOM experienciayuq kaqta, ichaqa mana sapa kutichu chayhina kanqa. Huk React proyecto karqan huk e-commerce sitiopaq llamk'asqay maypi huk estilo hojata kunan akllasqa qullqi quqpaq karganaykupaq necesitarqayku. Sasachakuyqa karqan, estilo raphi sapa p'anqapi kargakuchkasqa, maypachachus chiqamanta huk p'anqallapi necesitakun. Kay ruwananpaq kamachisqa paqarichiqqa mana hayk’aqpas huk estilo raphita dinamicamente kargasqachu. Yapamanta, kayqa tukuymanta entiendenapaqmi mayk’aqchus React abstraen karuman chay tradicional enfoqueta chayman chayasqaykita. CSSOM nisqa manapaschá sapa p’unchaw llamk’ayniykipi necesitasqaykichu. Ichaqa yaqapaschá mayninpi chaywan rimanakunayki kanqa, huk kutillatapas. Chay experienciakunan kallpachawarqan kay qelqata qelqanaypaq. Sallqapi achka kunan kaq web ruwanakuna chaymanta tecnologiakuna kanku mayqinkunatachus mana hayk'aqpas sapa p'unchaw llamk'ayniykipi chiqamanta llamiykunkichu. Ichapas allin musuq kanki web wiñachiypi chaymanta mana yachankichu chaymanta imaraykuchus huk específico marco abstracción kaqpi ch’unqasqa kanki chaymanta mana ukhumanta yachayta mañasunkichu, utaq llapanpipas. XML kaqmanta específicamente rimachkani, mayqinchus achkhanchik yachanchik ñawpaq simi kasqanmanta mana HTML kaqmanta tukuyninpi mana rikch’akuqchu. Kayta apamuchkani kay qhipa WHATWG rimanakuykunarayku yuyaychaspa huk hatun chunka pila XML kaqmanta riqsisqa XSLT programacion hina maskaqkunamanta hurqusqa kanan tiyan. Kayqa chiqamanta chay clase ñawpaq, kunan kaq tecnologia watakunaña kasqayku chaymanta imapas ruwanapaq llamk’achiy atikunman imaynachus CSSOM situacionpi equipoy karqa. ¿Ñawpaqtachu XSLTwan llamk'arqanki? Qawasun sichus kay ñawpaq tecnologiaman anchata k’umuykuspayku chaymanta ruwayninkunata hawa XML contextomanta aprovechayku chiqa pacha sasachakuykunata kunan pacha atipanapaq. XPath: Chawpi API nisqa Aswan chaniyuq XML tecnologia mayqinchus ichapas aswan allin kanman hawa chiqan XML qhawaymanta XPath, huk tapuy simi mayqinchus mayqin nodo utaq atributotapas huk saphi elementowan huk marka sach'api tariyta atikun. Ñuqaqa XSLT kaqpaq huk munakuy personalniyuq kani, ichaqa chaypas XPath kaqpi hapipakun, chaymanta munakuy personalta huk laduman churana tiyan ranking importancia kaqpi. XSLT hurqunapaq argumentoqa manam ima rimaytapas XPathmanta ruwanchu, chaymi suyasaq kunankamapas saqisqa kasqanmanta. Chayqa allinmi imaraykuchus XPath chawpi chaymanta aswan importante API kay suite tecnologiakunapi, aswanta mayk’aq imatapas tariyta munachkanki hawa normal XML llamk’achiyta llamk’achinapaq. Importantemi imaraykuchus, CSS akllaqkuna p'anqaykipi aswan elementokunata tarinapaq llamk'achiy atikunku chaypas, mana llapanta tariyta atinkuchu. Chaymanta, CSS akllanakuna mana llamk'achiy atikunmanchu huk elementota tarinapaq DOM kaqpi kunan kasqanmanhina. XPath atinmi. Kunanqa, wakin kayta ñawiriqniykikuna XPath yachankiman, wakintaq mana. XPath huk ancha hatun área tecnologia kaqmanta, chaymanta mana chiqamanta tukuy qallariykunata yachachiyta atiymanchu chaymanta chaymanta q’uñi ruwaykunata rikuchiyta atiyman huk sapalla qillqapi kayhina. Chiqamanta chay qillqasqata qillqayta munarqani, ichaqa Smashing Magazine nisqap chawpi qillqasqanqa mana 5.000 simikunamanta aswantachu rin. Ñam aswan achkapiña karqani2.000 simikunata, kuskan ñanllapi kachkaspa, qallariy yachaykunata. Chaymi, XPath kaqwan q’uñi ruwaykunata ruwayta qallarisaq chaymanta wakin t’inkikunata qusqayki mayqinkunatachus básicos kaqpaq llamk’achiy atikunki sichus kay ruwaykunata munaspa tarinki. XPath & CSS nisqakunata huñuspa XPath achka ruwaykunata ruwayta atin mayqinkunatachus CSS akllaqkuna mana atinkuchu elementokunata tapuchkaspa. Ichaqa CSS akllaqkuna huk pisi ruwaykunata ruwayta atinkutaq mayqinkunatachus XPath mana atikunchu, chaymanta, elementokunata clase sutiwan tapuyta.
CSS nisqa XPath nisqa .miClase /*[contiene(@clase, "miClase")]
Kay rikch'anapi, CSS .myClass clase sutiyuq elementokunata tapun. Chaykama, XPath ejemploqa elementokunata tapun mayqinkunachus huk atributo claseyuq kanku “myClass” watiqawan. Huk rimaypi, mayqin laya kaqpipas myClass kaqwan elementokunata akllan, .myClass clase sutiyuq kaqwan elementokuna — chaymanta “myClass” kaqwan elementokuna watiqapi, ahinataq .myClass2. XPath aswan hatunmi chay yuyaypi. Chaymi, mana. Manam yuyaychachkanichu CSS toqyachinanchikta chaymanta llapa elementokunata XPath kaqnintakama akllayta qallarinanchikta. Manam chaychu. Puntoqa XPath ruwayta atin imakunatachus CSS mana atinchu chaymanta ancha allin kanmanraq, chaypas huk ñawpaq tecnologia navegador pila kaqpi chaymanta mana sut'i hinachu kanman ñawpaq qhawaypi. Iskay tecnologiakuna kuska llamk’achisun mana atisqaykuraykullachu, aswanpas ruwaypi XPath kaqmanta imatapas yachasaqkurayku, huk yanapakuy pilaykipi ruwaspa — huk mana riqsisqaykipaschá tukuy pacha chaypi karqa! Sasachakuyqa JavaScriptpa document.evaluate ruwaynin chaymanta imaymana tapuy akllana ñankuna JavaScript kaqpaq CSS APIs kaqwan llamk’achisqayku mana tupaqchu. Huk tupaq tapuy API ruwarqani qallariyniykupaq, ichaqa riqsikuy, mana ancha yuyayta churarqanichu kaypi ruwasqaykumanta huk ripuy kasqanrayku. Kaypi huk allin sasan llamk’ana rikch’ana huk musuqmanta llamk’anapaq tapuy ruwaqmanta: Bryan Rasmussenpa Pen queryXPath [forked] nisqapi qhaway. Iskay ñankunata qillqa objeto kaqpi yaparqani: queryCSSSelectors (mayqinchus aswanta querySelectorAll) chaymanta queryXPaths. Kay iskaynintin huk queryResults objetota kutichin:
{ . tapuyTipo: nodos | watiqa | yupay | boolean, . ruwasqakuna: mayqin[] // html elementokuna, xml elementokuna, kaskakuna, yupaykuna, booleankuna, . queryCSSSelectors: (tapukuy: watiqa, allichay: boolean) => tapuypa Resultados, . queryXpaths: (tapukuy: kaska, allichay: boolean) => tapuypa Resultados } .
queryCSSSelectors chaymanta queryXpaths ruwanakuna qusqayki tapuyta purichinku ruwanakuna matriz kaqpi elementokuna patapi, ruwasqakuna matriz tipo nodos kaqmanta kaptin, chiqamanta. Mana hina kaqtinqa, huk queryResult nisqatam kutichinqa ch'usaq matrizwan huk laya nodukunawan. Sichus allichay propiedad chiqa kaqman churasqa, ruwanakuna kikin tapuyResults kaqninta tikranqa. Manan imapipas kaytaqa ruruchina pachamamapiqa apaykachanachu. Kayhinata ruwachkani puramente imaymana efectos iskay tapuy APIkuna kuska llamk'achiyta rikuchinaypaq. Ejemplo Tapuykuna Munani huk pisi ejemplokuna hukniray XPath tapuykunamanta rikuchiyta mayqinkunachus wakin atiyniyuq ruwanakuna ruwayta atinku chaymanta imaynatachus wak enfoques rantipi llamk'achiy atikunku chayta rikuchinku. Ñawpaq kaq rikch'anachiyqa //li/text() nisqa. Kayqa llapa li elementokunata tapun hinaspa qillqa nodunkunata kutichin. Chaymi, sichus kay HTML tapusunman:
- huk
- iskay
- kimsa
...kaymi kutichisqa:
{"queryType":"xpathEvaluate","results":["huk","iskay","kimsa"],"resultType":"string"}
Huk rimaypiqa, kay matriztam tarinchik: ["huk","iskay","kimsa"]. Normalmente, chayta chaskinaykipaq li elementokuna tapuwaq, chay tapuypa rurunta huk matrizman tikranki, matrizta mapapi, chaymanta sapa elementopa qillqa nodunta kutichinki. Ichaqa chayta aswan pisi rimayllapi ruwayta atiykuman XPath kaqwan: document.queryXPaths ("//li/texto ()").tukuykuna.
Reparay huk qillqa noduta tarinapaq ñanqa text() llamk'achiyta, mayqinchus ruwana firmaman rikch'akun — chaymanta chayhina. Huk elementopa qillqa nodunta kutichin. Ejemploykupiqa, marcapiqa kimsa li elementokunam kachkan, sapakamam qillqayuq ("huk", "iskay", "kimsa").
Huk ejemplotawan qhawarisun text() tapuymanta. Kaymi marcayku kasqanmanta yuyaykusun:
Huk tapuyta qillqasun, chaymi href atributo chanita kutichin: document.queryXPaths("//a[texto() = 'Yaykuy']/@href").ruwaykuna.
Kayqa huk XPath tapuymi kunan qillqapi, qhipa rikch'ana hina, ichaqa kay kutipi huk t'inkimanta href atributota kutichiyku (huk elemento) mayqinchus “Yaykuy” qillqayuq kachkan. Chiqap kutimusqachaymanta lluqsiyninqa ["/login.html"] nisqa. XPath Ruwaykunamanta Hatun qhaway Huk yupay XPath ruwanakuna kan, chaymanta manapaschá riqsisqachu kanki. Kanmi achka, yuyaykuni, yachanapaq hina, kaykunamanta:
starts-withSichus huk qillqa huk particular huk qillqa ejemplowan qallarikun, starts-with(@href, 'http:') chiqap kutichin sichus huk href atributo http: kaqwan qallarikun. containsSichus huk qillqa huk particular wak qillqa ejemplota hap'in, contains(text(), "Smashing Magazine") chiqap kutichin sichus huk qillqa nodo “Smashing Magazine” simikunata maypipas chaypi hap'in. countHuk tapuyman hayk'a tupachiy kasqanmanta yupayta kutichin. Ejemplopaq, count(//*[starts-with(@href, 'http:']) yupayta kutichin hayk'a t'inkikuna contexto nodo kaqpi elementokunayuq kanku huk href atributo kaqwan mayqinchus http: kaqwan qallariq qillqata hap'in. substringJavaScript huch'uy kaska hinam llamkan, mana kaskaqta huk argumento hina pasankichu. Ahinataq, substring("qillqayniy", 2, 4) "y t" nisqatam kutichin. substring-beforeHuk kaskaqpa rakinta huk watiqamanta ñawpaqman kutichin. Ejemplopaq, substing-before("ñuqa qillqasqay", " ") "ñuqap" kutichin. Chaynallataqmi substring-before("hi","bye") nisqapas ch'usaq watiqata kutichin. substring-afterHuk watiqamanta huk watiqamanta qhipaman kutichin. Ejemplopaq, substing-after("qillqaymi", " ") "qillqata" kutichin. Chaynallataqmi substring-after("hi","bye")chu ch'usaq watiqata kutichin. normalize-spaceYuraq ch'iqawan normalizasqawan argumento watiqata kutichin, ñawpaqpi, qhipa yuraq ch'ikuta qichuspa, yuraq k'iti qillqakunap qatiqninkunata huklla ch'usaqwan tikraspa. notReturns huk boolean chiqap sichus argumento llulla, mana hina kaqtinqa llulla. chiqapBolean chiqap kaqman kutichin. falseBoolean falso nisqaman kutichin. concatJavaScript concat kaqwan kikin kaq, mana huk kaskaqpi huk ñan hina purichinkichu. Aswanpas llapan tinkuchiy munasqayki watiqakunatam churanki. string-lengthKayqa manam JavaScript string-length nisqawan kaqllachu, aswanqa argumento hina qusqa watiqapa suni kaynintam kutichin. translateKayqa huk watiqata hapispa iskay kaq argumentota kimsa kaq argumentoman tikran. Ahinataq, tikray("abcdef", "abc", "XYZ") XYZdef lluqsichin.
Kay particular XPath ruwanakunamanta wak laduman, huk yupay wak ruwanakuna kanku mayqinkunachus JavaScript kaqninkuhinalla llamk'anku — utaq compañeros básicamente mayqin programacion simipipas — mayqinkunatachus ichapas allin kaqta tarinkiman, ahinataq pampa, techo, muyu, huñu, chaymanta wakkuna. Kay qatiq rikuchiyqa sapanka kay ruwaykunata rikuchin: Pen XPath Yupay ruwanakunata qhaway [forked] Bryan Rasmussenpa. Reparay, yaqa llapan watiqa manipulación ruwanakuna hina, achka yupayniyuq kaqkuna huk yaykusqalla hap'inku. Kayqa, chiqamanta, imaraykuchus tapunapaq llamk'achinanku tiyan, qhipa XPath rikch'anapi hina: //li [paso (qillqa ()) > 250]/@val
Sichus chaykunata llamk'achinki, imaynachus aswan rikch'anakuna ruwanku, tukunki chayta purichiyta ñawpaq nodo kaqpi mayqinchus ñanwan tupaq. Hinallataq wakin laya tikray ruwanakuna kanku ichapas mana ruwanaykichu tiyan imaraykuchus JavaScript kikin laya tikray sasachakuyniyuqña. Ichaqa kanmanmi wakin kutipi huk watiqata huk yupayman tikrayta munasqayki, chaynapi huk yupaywan tupachinaykipaq. Imapa rikch'ayninta churaq llamk'anakunaqa boolean, yupay, watiqa, nodo nisqakunam. Kaykunaqa ancha chaniyuq XPath willay layakuna kanku. Hinallataq imaynachus yuyaykunkiman hina, aswan kay ruwanakuna mana DOM nodos kaq willay layakunapi llamk'achiy atikunku. Ejemplopaq, substring-after huk watiqata hap’in imaynachus ña qatasqayku hina, ichaqa huk href atributomanta watiqa kanman. Hinallataqmi huk watiqalla kanman:
const testSubstringAfter = document.queryXPaths ("subcadena-qhipa ('allin kay pacha',' ')");
Sut'inmi, kay ejemploqa kutichipuwasunmi chay matriz de resultados nisqakunata ["world"] hina. Kayta ruwaypi rikuchinaypaq, huk demo p'anqata ruwarqani ruwanakunata llamk'achispa mana DOM nodos kaqpa contranpi: Bryan Rasmussenpa Pen queryXPath [forked] nisqapi qhaway. Tikray ruwanamanta musphay aspectota qhawanayki tiyan, chaytaq sichus iskay kaq argumentopi huk qillqayuq kanki (i.e., tikray munasqayki qillqakuna lista) chaymanta mana tupaq qillqa tikraypaq, chay qillqa lluqsiymanta hurqusqa. Shinami kay:
traducir('Allinllachu, Sutiyqa Inigo Montoya, taytayta wañuchirqanki, wañunaykipaq wakichiy','abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,','*')
...watiqapi lluqsimun, ch'usaqkunatapas: [" * * ** "]
Kayqa niyta munan, “a” qillqaqa quyllur (*) nisqaman tikrasqa kachkan, ichaqa sapa wak qillqa mana tikrayniyuq kaqqa, chay qillqa mayt’uman qusqa, tukuyninpi hurqusqa kachkan. Yuraq espacioqa llapanmi puchuwanchistikrasqa “a” qillqakuna chawpipi. Chaymanta yapamanta, kay tapukuy:
traducir('Allinllachu, Sutiyqa Inigo Montoya, taytayta wañuchirqanki, wañunaykipaq wakichiy','abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,','******************************************************')")
...mana sasachakuyniyuqchu chaymanta kayhina rikch'aq ruwayta lluqsichin:
"***** ** **** ** ***** ******* *** ****** ** ****** ******* ** ***"
Ichapas qamman llallisunkiman mana JavaScript kaqpi sasa ñan kanchu exactamente ruwanapaq imatachus XPath tikray ruwana ruwan, ichaqa achka llamkanakuna kaqpaq, replaceAll sapa kuti expresionkunawan ruwayta atin. Qamqa kikin ruwayta rikuchisqayta llamk'achiy atikunki, ichaqa chay subóptimo kanman sichus tukuy munasqaykiqa kaskaqkunata tikraymi. Kay qatiq rikuchiy XPath tikray ruwayta p’istuykun huk JavaScript laya qunapaq: Qaway Pen tikray ruwayta [forked] Bryan Rasmussenpa. ¿Maypitaq kayna kaqta servichikuwaq? Piensarisun Caesar Cipher chifrasqata kimsa sitio offset nisqawan (e.g., 48 B.C. watamanta chifrasqa patamanta):
translate("César Rubicon chimpayta yuyaykushan!", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", nispa. "XYZABCDEFGHIJKLMNOPQRSTUVWxyzabcdefghijklmnopqrstuvw")
Yaykuy qillqasqa “¡César Rubicon chimpayta yuyaykushan!” chaymanta lluqsimun “Zxbpxo fp mixkkfkd ql zolpp qeb Oryfzlk!” Huk utqaylla ejemplota qunaypaq hukniray atiykunamanta, huk q'illay ruwayta ruwarqani mayqinchus huk watiqa yaykuyta hapin chaymanta huk tikray ruwayta llamk'achin qillqata kutichinanpaq, llapa qillqakuna umlauts hap'iqkunatapas. Qaway Pen metal llamk'ayta [forked] Bryan Rasmussenpa rurasqan.
const q'illay = (str) => { . kutichiy tikray (str, "AOUaou","ÄÖÜäöü"); } .
Hinaspa, sichus qusqa kanman qillqasqa “Motley Crue kamachin, rock on dudes!”, kutichin “Mötley Crüe rüles, röck ön düdes!” Sut’inmi, hukqa kay ruwaymanta tukuy laya parodia utilizacionkunayoqmi kanman. Sichus chay kanki, chaymanta kay TVTropes qillqasqa achka inspiracionta qunayki tiyan. CSS nisqawan XPath nisqawan llamk'achispa Yuyariy hatun razonniyku CSS akllaqkunata XPath kaqwan kuska llamk'achinapaq: CSS yaqa entienden ima huk clase kaqta, maypichus aswan allin ruwayta atikunki XPath kaqwan clase atributomanta watiqa tupachiykuna. Chayqa yaqa llapanpim allin kanqa. Ichaqa sichus hayk'aqllapas huk situacionman tupawaq maypi, niy, huk runa .primaryLinks chaymanta .primaryLinks2 sutiyuq clasekuna ruwasqa chaymanta XPath llamk'achkanki .primaryLinks claseta chaskinaykipaq, chaymanta ichapas sasachakuykunawan tupawaq. Mana chayhina sonso kaq kaptinqa, XPath nisqawanchá llamk’awaq. Ichaqa llakisqa kani willanaypaq, maypichus runakuna chay clase sonso ruwaykunata ruwanku chaypi llank’asqayta. Kaypi huk demo CSS chaymanta XPath kuska llamk’achispa. Qhawachin imachus ruwakun mayk’aqchus codigo llamk’achkanchik huk XPath purichinapaq huk nodo contexto kaqpi mana qillqap nodo kaqninpi. Qaway Pen css hinaspa xpath kuska [forked] Bryan Rasmussenpa ruwasqan. CSS tapuyqa .relatedarticles a kaq, mayqinchus iskay a elementokunata huk div kaqpi .relatedarticles clase qusqa kaqpi apamun. Chay qhipaman kimsa “mana allin” tapuykuna kanku, chaytaq niyta munan, tapuykuna mana munasqaykuchu ruwanku kay elementokunawan nodo contexto hina purichkaptinku. Sut’inchasaqmi imaraykun yuyaykusqaykimanta huknirayta comportakusqankuta. Kimsa mana allin tapukuykuna tapusqanchikqa kaymi:
//text(): Qillqapi llapa qillqasqata kutichin. //a/text(): Qillqapi t'inkikuna ukhupi llapa qillqasqata kutichin. ./a/text(): Mana ima ruwasqakunata kutichin.
Kay ruwasqakunap razonninqa, contextoyki CSS tapuymanta kutichisqa elementokuna kachkaptinpas, // tukuy qillqap contranpi rin. Kayqa XPath nisqap kallpanmi; CSS mana huk nodomanta huk ñawpaq taytaman chaymanta chay ñawpaq tayta wawqinman riyta atinchu, chaymanta chay wawqip mirayninman urayman puriyta atinchu. Ichaqa XPath atinmi. Chaykama, ./ kunan nodumanta wawakunata tapun, maypichus ch'iku (.) kunan noduta rikuchin, ñawpaqman chiru (/)taq wakin wawa noduman riyta rikuchin — atributo, elemento icha qillqa kaptinpas ñanpa qatiqnin rakinwanmi kamachikun. Ichaqa manan kanchu wawa huk elemento CSS tapuywan akllasqa, chay hina chay tapuypas mana imatapas kutichinchu. Chay qhipa demostracionpiqa kimsa allin tapuykunam kachkan:
.//qillqa (), . ./qillqa (), . normalizay-espacio (./texto ()).
Normalizar-espacio tapuyqa XPath ruwana llamk'ayta rikuchin, ichataq wak tapuykunapi churasqa sasachakuytapas allichan. HTML nisqa kayhinata ruwasqa kachkan:
Selenium WebDriver kaqwan Ruway pruebaykita kikillanmanta ruway
Tapukuyqa qillqa nodu qallariyninpi tukukuyninpipas chiru mikhunata kutichin,hinaspa normalize-space kayta hurqun. Ima XPath llamk'anatapas llamk'achiy, mana boolean kaqmanta huk yaykusqawan kutichiq XPath huk ruwanakunaman ruwakun. Kay qatiq demo nisqapiqa achka ejemplokunatam qawachin: Qaway Pen xpath ruwanakuna ejemplokunata [forked] Bryan Rasmussenpa ruwasqan. Ñawpaq kaq ejemplopin rikukun ima sasachakuymantachus cuidakunayki chayta. Específicamente, kay codigo:
document.queryXPaths("huch'uy kaska-qhipa (//a/@href,'https://')");
...huk watiqata kutichin:
"www.smashingmagazine.com/2018/04/ruray-prueba-selenio-webdriver/".
Chayqa sentidoyuqmi, ¿aw? Kay llamkanakunaqa manam matrizkunatachu kutichin ichataq sapalla watiqakunata icha sapalla yupaykunatam kutichin. Ruwayta maypipas achka ruwaykunawan purichiyqa ñawpaq ruwayllatam kutichin. Iskay kaq taripayqa qawachinmi ima munasqanchikta:
document.queryCSSSelectors("a").queryXPaths("huch'uy kaska-qhipaman (./@href,'https://')");
Mayqintaq iskay watiqakunap matrizninta kutichin:
["www.smashingmagazine.com/2018/04/ruray-prueba-selenio-webdriver/","www.smashingmagazine.com/2022/11/kikillanmanta-prueba-ruray-allin-chayay atiy/"]
XPath ruwanakuna JavaScript kaqpi ruwanakuna hina anidado kanman. Chaymi, sichus Smashing Magazine URL estructurata yachanchik chayqa, kayta ruwayta atiykuman (plantilla literalkunata llamk'achiyta yuyaychakun): `t'ikray( subcadena( subcadena-qhipaman (./@href, ‘www.smashingmagazine.com/') ,9), . '/','')`
Kayqa huk chhika ancha sasachakuyniyuq kachkan chaymanta ima ruwasqanmanta willakuq rimaykunata necesitan: llapa URL href atributomanta www.smashingmagazine.com/ kaqmanta qhipaman hapiy, ñawpaq isqun qillqakunata hurquy, chaymanta ñawpaqman chiru (/) qillqata mana imaman tikray chaymanta tukuq ñawpaq siq'imanta qispichinaykipaq. Chay ruwasqa matrizqa:
["ruray-prueba-selenio-webdriver","kikillanmanta-prueba-ruray-allinchay-yaykuna"]
Aswan XPath Uso Casokuna XPath chiqamanta pruebakunapi k'anchariyta atin. Razón mana sasachu qhaway, imaynachus XPath llamk'achiy atikunman sapa elemento DOM kaqpi jap'inapaq, mayqin posiciónmanta DOM kaqpi, maypichus CSS mana atikunchu. Mana yupayta atikunkichu CSS clasekuna achka kunan pacha ruway sistemakunapi sapanchasqa qhipakusqankuta, ichaqa XPath kaqwan, aswan kallpasapa tupachiykunata ruwayta atiyku imachus huk elementopa qillqa kaqnin kasqanmanta, mana huk tikraq DOM ruwayta qhawaspa. Técnicas kaqmanta investigación ruwasqa kachkan mayqinkunachus pruebakuna XPath resiliente ruwayta atikunki. Mana imapas aswan mana allinchu pruebakuna flake out kaqmanta chaymanta pantaymanta huk CSS akllaq manaña llamk'asqanraykulla imapas sutichasqa utaq hurqusqa kasqanrayku. XPathpas chiqamanta hatunmi achka tariq hurquypi. Huk elementowan tupachinapaq XPath tapuykunata llamk'achinapaq aswan huk ñan kan. Chaynallataqmi CSS nisqawanpas. Ichaqa XPath tapuykuna aswan dirigisqa ñanpi imakunaman perforayta atinku chaymanta ima kutichisqa kaqta limitan, huk específico tupachiyta tariyta atikunki maypi achka atikuq tupachiykuna kanman. Ejemplopaq, XPath llamk'achiyta atiykuman huk específico h2 elementota kutichinapaq mayqinchus huk div ukhupi kachkan chaymanta chaylla huk wawqi div qatin chaymanta, kutichiyninpi, huk wawa siq'i elementota huk data-testID="umalliq" atributoyuqta hap'in:
ama kay titulota hapiychu
Ama kay umalliqtapas hap'iychu
Umalliq siq'ipaq umalliq
Kaymi tapukuy: document.tapukuyXPaths (` //div[. qatiq-wawqi::div[1] /img[@data-testID='kamachiq']. ] . /h2/ . qillqa() . `);
Huk demota churasun imaynatas chay llapan huñunakunku chayta qhawanapaq: Qaway Pen Complex H2 Tapuy [forked] Bryan Rasmussenpa ruwasqan. Chaymi, arí. XPath llamk'achispa huk pruebapi mayqin elementomanpas achka atikuq ñankuna kanku. XSLT 1.0 Mana allinpaq qhawarisqa Ñawpaqmanta rimarqani Chrome equipo planean XSLT 1.0 yanapakuyta navegadormanta hurquyta. Chayqa ancha chaniyuq imaraykuchus XSLT 1.0 XML-enfocado programacionta llamk’achin qillqa tikraypaq chaymanta, kutichiyninpi, XPath 1.0 kaqpi hapirin, mayqinchus aswan maskaqkunapi tarikun. Chay ruwakuptin, huk componente clave XPath kaqmanta chinkachisunchik. Ichaqa XPath chiqamanta pruebakuna qillqanapaq ancha allin kasqanmanta qusqa, mana chaninniyuqta tarini XPath tukuyninpi mayk'aqllapas chaylla chinkananta. Chayta nispa, repararqanin runakuna huk ruwaymanta interesakusqankuta, chayta qechuqtinku. Hinallataq chay chiqamanta chiqa kay casopi XSLT 1.0 manaña llamk’achisqa kaptin. Huk tukuy rimanakuy ruwakuchkan chaymanta Hacker Noticias hunt’asqa argumentokunawan chay depreciación contra. Kikin qillqasqa huk hatun ejemplo huk blogueo marco ruwanapaq XSLT kaqwan. Qamkikiyki rimayta ñawiriyta atikunki, ichaqa imayna JavaScript huk shim hina XLST kaqpaq llamk'achiy atikunman chay laya casokunata qhawanapaq yaykun. Rikurqanim yuyaychaykunata navegadores SaxonJS llamk’achinanku tiyan, mayqinchus JavaScript’s Saxon XSLT, XQUERY chaymanta XPath motorkunaman huk puerto kachkan. Chayqa huk munay yuyaymi, aswanta Saxon-JS kunan laya kay especificaciones kaqmanta ruwan, maypichus mana huk navegador kanchu mayqinchus mayqin laya XPath utaq XSLT kaqmanta 1.0 kaqmanta aswanta ruwan, chaymanta mana mayqinpas XQuery ruwaqchu. Norm Tovey-Walshman Saxonicapi chayarqani, chay empresaqa SaxonJSpa qhipanpi kachkan chaymanta wak versiones de motor Saxon. Paymi nirqa: “Sichus mayqin navegador ranqhaqpas SaxonJS huk qallariy hina hap’iyta munarqa kunan pacha XML tecnologiakuna maskaqman tinkinapaq, kusisqa kayku paykunawan rimanaykupaq.”— Norm Tovey-Walsh
Ichaqa yaparqataqmi: "Anchata admirakuyman sichus pipas yuyaykunman SaxonJS kunan formapi hap'ispa mana tikrasqa navegador ruwayman urmachiyqa allin ruway kanman. Huk navegador ranqhaq, naturalezamanta chay navegador ruwasqankumanta, tinkiyman asuykunman aswan ukhu nivelpi ñuqaykumanta ‘hawamanta’."— Norm Tovey-Walsh
Chayqa allinmi qhawarinapaq Tovey-Walshpa rimasqanqa yaqa huk semana ñawpaqtaraqmi hamurqan XSLT pisichasqa willakuymanta. Tukuchina Hinaspapas astawanmi riyman karqan. Ichaqa suyachkani kayqa XPath atiyninta rikuchirqa chaymanta achka ejemplokunata qusurqanki imayna hatun ruwaykunata aypanapaq llamk'achiyta rikuchispa. Huk allin ejemplon ñawpaq tecnologiamanta pila navegador kaqpi kunankamapas achka yanapakuyniyuqraq, mana hayk’aqpas yacharqankichu kasqanmanta utaq mana hayk’aqpas chayman chayayta yuyaykurqankichu chaypas. Astawan Ñawinchay
“Pruebakuna Web Automatizada kaqmanta Resilienciata kallpachay Simi Natural kaqwan” (ACM Biblioteca Digital) Maroun Ayli, Youssef Bakouny, Nader Jalloul, Rima Kilany imaKay qillqasqa achka XPath ejemplokunata qun pruebakuna resiliente qillqanapaq. XPath (MDN)Kayqa huk allin qallariypaq sichus huk técnico sut'inchayta munanki imayna XPath llamk'an chayta sut'inchaspa. XPath Yachachiy (ZVON)Kay yachachiyta tarirqani aswan yanapakuq kaqta kikiypa yachayniypi, achka ejemplokunaman chaymanta sut’i sut’inchaykunaman gracias nispa. XPatherKay interactivo yanapakuyqa chiqalla codigowan llamk'ayta saqin.