N bɛ ɲɛfɛla yiriwali la kabini waati jan walasa ka ŋaniya dɔ ye sanw kɔnɔ : yiriwalikɛla kamalenninw bɛ baara kɛ ni porogaramuko misali kura ye k’a sɔrɔ u ma tariku kɔnɔko faamuya. Tiɲɛ don, a bɛ faamuya cogo dafalen na ko i tɛ fɛn dɔ dɔn. Ɛntɛrinɛti ye yɔrɔba ye kosɛbɛ, seko ni dɔnko suguya caman bɛ min kɔnɔ, wa an t’a dɔn tuma bɛɛ. Kalan min bɛ kɛ o baara in na, o ye taama ye min bɛ taa ɲɛ sanni ka kɛ fɛn ye min bɛ kɛ siɲɛ kelen ka ban. Case in point: N ka kulu kɔnɔ mɔgɔ dɔ y’a ɲininka n’a bɛ se k’a dɔn ni baarakɛlaw bɛ taa yɔrɔ jan tab kɛrɛnkɛrɛnnen dɔ la UI kɔnɔ. N y’a jira ko JavaScript’s beforeunload ko kɛlen. Nka minnu ye nin ko in ɲɛnabɔ ka kɔrɔ, olu b’a dɔn ko nin bɛ se ka kɛ bawo u ye lasɔminiw sɔrɔ kunnafonidilanw kan minnu ma mara yɔrɔ wɛrɛw la, minnu kama beforeunload ye baarakɛcogo ye min bɛ kɛ cogoya la. N ye pageHide ni visibilityChange ko kɛlenw fana jira n baarakɛɲɔgɔn na walasa ka sumani ɲuman kɛ. Ne y’o dɔn cogo di? Parce que (bari) a Nàna poroze wɛrɛ la, a ma Kɛ k’a sababu Kɛ n ye kàlan Kɛ a kan n’o ye JavaScript kalanni daminɛ na. Tiɲɛ ye ko bi ɲɛfɛla-kalanw jɔlen bɛ fɛɛrɛbɔ-tɔnba minnu tùn bɛ u ɲɛfɛ, olu kamankunw kan. U bɛ yiriwali walew abstrait, tuma caman na walasa ka yiriwalikɛlaw ka dɔnniya ɲuman sɔrɔ min bɛ dɔ bɔ, walima hali ka ban, a mago la ka dɔn walima ka maga fɛn na, laada la, minnu tun ye ɲɛfɛla hakilina nafamaw ye, n’a sɔrɔla bɛɛ ka kan ka minnu dɔn. Aw ye CSS Object Model (CSSOM) jateminɛ. I bɛ Se k’a Jira ko mɔgɔ o mɔgɔ bɛ baara Kɛ CSS ni JavaScript la, o tigi bɛ ni CSSOM bololabaara dɔnniya kulu ye, nka o tɛna Kɛ tuma bɛɛ. React porozɛ dɔ tun bɛ yen n ye baara kɛ ɛntɛrinɛti jagokɛyɔrɔ dɔ la, an mago tun bɛ min na ka stylesheet dɔ doni sarako ɲɛnabɔbaga sugandilen in na sisan. Gɛlɛya tun ye ko stylesheet tun bɛ doni ɲɛ kelen-kelen bɛɛ kan k’a sɔrɔ a mago tun bɛ ɲɛ kɛrɛnkɛrɛnnen dɔ dɔrɔn de la tiɲɛ na. Dabɔbaa min tùn ka baara Kɛra k’o Kɛ k’o Kɛ, o tùn ma deli ka stylesheet (daɲɛgafe) dɔ Lase 'sèn na ni fanga ye. Nin sen in fana na, nin bɛ faamuya pewu ni React bɛ laadala fɛɛrɛ min na, i tun bɛ se ka se min ma, o bɔ a la. A ka c’a la, CSSOM tɛ fɛn ye i mago bɛ min na i ka don o don baara la. Nka a ka c’a la, i bɛna a ɲini ka jɛɲɔgɔnya kɛ n’a ye waati dɔ la, hali ni a kɛra siɲɛ kelen. O ko kɛlenw ye ne bila ka nin barokun sɛbɛn. Ɛntɛrinɛti baarakɛminɛnw ni fɛɛrɛ caman bɛ kungo kɔnɔ minnu bɛ yen, n’a sɔrɔ i ma maga minnu na abada k’a ɲɛsin i ka don o don baara ma. Laala i ye mɔgɔ kuraw ye ɛntɛrinɛti yiriwali la, wa i t’u dɔn dɔrɔn bawo i bɛ i yɛrɛ su ji la ka ɲɛsin karamɔgɔ kɛrɛnkɛrɛnnen dɔ ka abstraction ma min t’a ɲini i fɛ i k’a dɔn kosɛbɛ, walima hali hali dɔɔnin. N b’a Fɔ kɛrɛnkɛrɛnnenya la XML kan, an caman b’a Dɔn min ye kan kɔrɔ ye min ni HTML tɛ kelen ye fewu. N b’o Lase k’a sababu Kɛ WHATWG ka barow ye kɔsa in na minnu b’a Jira ko XML kuluba dɔ min bɛ Weele ko XSLT porogaramuw, o yɔrɔba dɔ ka kan ka Bɔ navigatɔrɔw la. Nin ye fɛɛrɛ kɔrɔlen sugu ye tigitigi, min bɛ an bolo kabini san caman, min bɛ se ka kɛ fɛn ye min bɛ se ka kɛ i n’a fɔ n ka kulu tun bɛ CSSOM cogoya min na. Yala aw ye baara kɛ ni XSLT ye ka kɔrɔ wa? An k’a lajɛ n’an b’an jigi da nin fɛɛrɛ kɔrɔ in kan kosɛbɛ, k’a ka fɛnw ta XML kɔkan walasa ka diɲɛ gɛlɛya lakikaw ɲɛnabɔ bi. XPath: API cɛmancɛ la XML fɛɛrɛ min nafa ka bon kosɛbɛ n’a sɔrɔla o nafa ka bon kosɛbɛ XML jateminɛ tilennen kɔfɛ, o ye XPath ye, ɲininkalikan min b’a To i bɛ se ka node walima fɛn o fɛn Sɔrɔ taamaʃyɛn jiri la ni jujɔfɛn kelen ye. N yɛrɛ ka kanuya bɛ XSLT la, nka o fana bɛ tali kɛ XPath la, wa n yɛrɛ ka kanuya ka kan ka bila kɛrɛfɛ jɔyɔrɔfalen nafa la. XSLT bɔli sɔsɔli tɛ XPath kofɔ, o la n hakili la a bɛ Sɔn hali bi. O ka ɲi bawo XPath ye API cɛmancɛ ye ani min nafa ka bon kosɛbɛ nin fɛɛrɛbɔ kulu in kɔnɔ, kɛrɛnkɛrɛnnenya la n’i b’a ɲini ka fɛn dɔ sɔrɔ ka baara kɛ ni min ye XML baarakɛcogo nɔgɔman kɔkan. A nafa ka bon bawo, hali ni CSS sugandilikɛlaw bɛ Se ka Kɛ ka fɛn fanba Sɔrɔ i ka ɲɛ kan, u tɛ Se k’u bɛɛ Sɔrɔ. O tɛmɛnen 'kɔ, CSS sugandiliw tɛ Se ka Kɛ ka fɛn dɔ Sɔrɔ ka Da a jɔyɔrɔ kan sisan DOM kɔnɔ. XPath bɛ se ka. Sisan, aw dɔw minnu bɛ nin kalan, aw dɔw bɛ se ka XPath dɔn, dɔw fana tɛ se ka dɔn. XPath ye fɛɛrɛko yɔrɔba ye, wa n tɛ se ka basigi bɛɛ kalan tiɲɛ na ani fana ka fɛn dumanw jira aw la ka kɛ n’a ye barokun kelen kɔnɔ i n’a fɔ nin. Tiɲɛ na, n y’a ɲini k’o barokun sɛbɛn, nka Smashing Magazine gafe bɔlen hakɛ cayalenba tɛ tɛmɛ daɲɛ 5000 kan. N tun bɛ kaban ka tɛmɛdaɲɛ 2000 bɛ yen k’a sɔrɔ a basigilenw tilancɛ dɔrɔn de bɛ yen. O la, n b’a daminɛ ka fɛn dumanw kɛ ni XPath ye ka jɛgɛnsira dɔw di aw ma aw bɛ se ka baara kɛ ni minnu ye basigiw kama n’aw y’a ye ko nin fɛn in ka di aw ye. XPath & CSS faralen ɲɔgɔn kan XPath bɛ se ka fɛn caman kɛ, CSS sugandibagaw tɛ se ka minnu kɛ ni u bɛ fɛnw ɲininka. Nka CSS sugandilikɛlaw bɛ Se fana ka fɛn damadɔw Kɛ XPath tɛ Se ka minnu Kɛ, n’o ye ka fɛnw ɲininkali Kɛ kàlanso tɔgɔ fɛ.

CSS (CSS) ye XPath (XPath) ye .myKlasi ye /*[contains(@klasi, "n ka kalasi")]

Nin misali in na, CSS bɛ ɲininkali kɛ fɛnw na minnu kɔnɔ .myClass kalasi tɔgɔ bɛ sɔrɔ. O waati kelen na, XPath misali bɛ ɲininkali Kɛ fɛnw na minnu bɛ ni fɛnɲɛnɛma-klasi ye ni sɛrɛkili ye “myClass”. O kɔrɔ ye ko a bɛ fɛnw sugandi minnu bɛ ni myClass ye fɛn o fɛn na, fɛn minnu bɛ ni .myClass kalasi tɔgɔ ye — ani fɛn minnu bɛ ni “myClass” ye sɛrɛ kɔnɔ, i n’a fɔ .myClass2. XPath ka bon o siratigɛ la. O la sa, ayi. N t’a Fɔ ko an ka kan ka CSS (CSS) Bɔ k’a daminɛ ka fɛnw bɛɛ sugandi XPath fɛ. O t’a kun ye. O kumasen ye ko XPath bɛ Se ka fɛnw Kɛ CSS tɛ Se ka minnu Kɛ, wa a bɛ Se ka Kɛ nafa caman ye halibi, hali n’a y’a Sɔrɔ a ye fɛɛrɛ kɔrɔ ye min bɛ navigatɔrɔn kulu kɔnɔ wa a bɛ Se ka Kɛ ko a tɛ Ye a ɲɛ fɔlɔ la. An ka baara kɛ ni fɛɛrɛ fila ninnu ye ɲɔgɔn fɛ, a tɛ kɛ dɔrɔn bawo an bɛ se, nka bawo an bɛna fɛn dɔ dɔn XPath kan o kɛcogo la, k’a kɛ baarakɛminɛn wɛrɛ ye i ka kulu kɔnɔ — n’a sɔrɔla i tun t’a dɔn min bɛ yen kabini tuma jan ! Gɛlɛya ye ko JavaScript ka document.evaluate fɛɛrɛ ani ɲininkali sugandicogo suguya minnu bɛ Kɛ ni CSS APIw ye JavaScript kama, olu tɛ Bɛn. N ye ɲininkali API bɛnkan dɔ Kɛ walasa k’an Daminɛ, hali n’a y’a Sɔrɔ n ma miiri caman Kɛ o la bari a ye bɔli ye an bɛ min Kɛ yan. Nin ye ɲininkali kɛcogo nɔgɔman ye min bɛ se ka baara kɛ kokura: Aw ye Pen queryXPath [forked] lajɛ min kɛra Bryan Rasmussen fɛ. N ye fɛɛrɛ fila Fàra sɛbɛn fɛn kan: queryCSSSelectors (o ye querySelectorAll ye a jɔyɔrɔba la) ani queryXPaths. Nin fila bɛɛ bɛ segin queryResults fɛn dɔ kan:

{ ɲininkali suguya: nodes | sɛrɛkili | nimɔrɔ | boolekan, . jaabiw : fɛn o fɛn[] // html fɛnw , xml fɛnw , sɛrɛw , jatedenw , booleans , . queryCSSSelectors: (ɲininkali: sɛrɛkili, ladilan: boolean) => ɲininkali jaabiw, queryXpaths: (ɲininkali: sɛrɛkili, ladilan: boolean) => ɲininkali jaabiw } .

queryCSSSelectors ni queryXpaths baarakɛcogo bɛ ɲininkali min di u ma, olu bɛ baara kɛ ni fɛnw ye minnu bɛ jaabiw sɛrɛkili kɔnɔ, ni jaabiw sɛrɛkili ye suguya nodew ye, tiɲɛ don. N’o tɛ, a bɛna queryResult segin ni array lankolon ye ani nodes sugu dɔ. Ni amend property bilala tiɲɛ na, baarakɛcogo bɛna u yɛrɛ ka queryResults Changer. Cogo si la, o man kan ka kɛ fɛn dilanni sigida la. N b’a Kɛ nin cogo in na dɔrɔn walasa ka ɲininkali API fla ninnu baara ɲɔgɔn fɛ nɔ suguyaw Jira. Misali Ɲininkaliw N b’a fɛ ka misali damadɔ jira XPath ɲininkali suguya caman na minnu b’u bɛ se ka fɛn barikama dɔw jira ani u bɛ se ka baara kɛ cogo min na fɛɛrɛ wɛrɛw nɔ na. Misali fɔlɔ ye //li/text() ye. O bɛ li fɛnw bɛɛ ɲininkali Kɛ k'u ka sɛbɛnni-yɔrɔw Lasegin. O la, n’an tùn bɛ nin HTML in ɲininkali Kɛ:

  • kelen
  • fila
  • sàba

...nin ye min bɛ segin:

{"ɲininkali suguya":"xpathEvaluate","jaabiw":["kelen","fila","saba"],"jaabi suguya":"string"}

O kɔrɔ ye ko an bɛ nin sɛrɛkili in sɔrɔ: ["kelen","fila","saba"]. A ka c’a la, i tun bɛ ɲininkali Kɛ li fɛnw na walasa k’o Sɔrɔ, k’o ɲininkali in jaabi Yɛlɛma ka Kɛ ‘kulu ye, ka sɛrɛkili karti, ka ‘yɔrɔ kelen-kelen bɛɛ ka sɛbɛnni-yɔrɔ Lasegin. Nka an bɛ Se k’o Kɛ ka surunya ni XPath ye: document.queryXPaths("//li/text()").jaabiw.

A kɔlɔsi ko sɛbɛnni node sɔrɔcogo ye ka baara kɛ ni text() ye, min bɛ i n’a fɔ baarakɛcogo bolonɔbila — wa a bɛ ten. A bɛ fɛn dɔ ka sɛbɛnni-yɔrɔ segin. An ka misali la, li fɛn saba bɛ taamaʃyɛn na, sɛbɛnni bɛ u kelen-kelen bɛɛ la ("kelen", "fila", ani "saba"). An k’a lajɛ misali kelen wɛrɛ la text() ɲininkali kan. A ka kɛ ko nin ye an ka taamasiyɛn ye: Sigi don

An ka ɲininkali dɔ sɛbɛn min bɛ href attribut nafa segin: document.queryXPaths("//a[text() = 'Sɔn']/@href").jaabiw.

Nin ye XPath ɲinini ye sɛbɛn in kan sisan, i n’a fɔ misali laban, nka nin sen in na an bɛ jɛgɛnsira dɔ (fɛn dɔ) href attribut segin min kɔnɔ “Sign In” sɛbɛnni bɛ yen. A yɛrɛ seginnao nɔ ye ["/login.html"] ye. XPath Baarakɛcogo ɲɛfɔli XPath baarakɛcogo damadɔ bɛ yen, wa n’a sɔrɔla i t’u dɔn. Ne hakili la, damadɔ bɛ yen, minnu nafa ka bon ka dɔn, ninnu dɔw ye ninnu ye:

starts-withNi sɛbɛnni dɔ daminɛna ni sɛbɛnni misali wɛrɛ kɛrɛnkɛrɛnnen ye, starts-with(@href, 'http:') bɛ segin tiɲɛ na ni href fɛn dɔ daminɛna ni http: ye. containsNi sɛbɛnni dɔ kɔnɔ, sɛbɛnni misali wɛrɛ kɛrɛnkɛrɛnnen dɔ bɛ yen, contains(text(), "Smashing Magazine") bɛ tiɲɛ segin ni sɛbɛnni node dɔ kɔnɔ, “Smashing Magazine” daɲɛw bɛ a kɔnɔ yɔrɔ o yɔrɔ. countA bɛ jatebɔ segin min b’a jira ko bɛnkan hakɛ bɛ ɲininkali dɔ la. Misali la, count(//*[starts-with(@href, 'http:']) bɛ jatebɔ segin min b'a jira ko jɛgɛnsira hakɛ min bɛ context node kɔnɔ, elements bɛ minnu na ni href attribute ye min kɔnɔ sɛbɛnni bɛ daminɛ ni http: ye. substringA bɛ baara kɛ i n’a fɔ JavaScript substring, fo n’i ye sɛrɛ tɛmɛn i n’a fɔ sɔsɔli. Misali la, substring("ne ka sɛbɛnni", 2, 4) bɛ "y t" segin. substring-beforeA bɛ sɛrɛkili yɔrɔ segin ka kɔn sɛrɛ wɛrɛ ɲɛ. Misali la, substing-before("ne ka sɛbɛnni", " ") bɛ "ne" segin. O cogo kelen na, substring-before("hi","bye") bɛ sɛrɛ lankolon segin. substring-afterA bɛ sɛrɛkili yɔrɔ segin sɛrɛ wɛrɛ kɔfɛ. Misali la, substing-after("ne ka sɛbɛnni", " ") bɛ "sɛbɛn" segin. O cogo kelen na, substring-after("hi","bye") bɛ sɛrɛ lankolon dɔ segin. normalize-spaceA bɛ sɔsɔli sɛrɛkili segin ni yɔrɔ finman ye min bɛ normalize ni ɲɛfɛla ni kɔfɛyɔrɔ finmanw bɔli ye ani ka yɔrɔ jɛlen taamasiyɛnw tugu-tugulenw bila yɔrɔ kelen nɔ na. notA bɛ boolean true segin ni sɔsɔli ye nkalon ye, n’o tɛ nkalon ye. tiɲɛA bɛ boolean tiɲɛ segin. falseA bɛ boolean nkalon segin. concatO ni JavaScript concat ye kelen ye, fo n'i m'a boli i n'a fɔ fɛɛrɛ ye sɛrɛ kan. O nɔ na, i b’a fɛ ka juru minnu bɛɛ Dòn ɲɔgɔn na, i b’olu bɛɛ Dòn a kɔnɔ. string-lengthNin ni JavaScript string-length tɛ kelen ye, nka a bɛ sɛrɛ janya segin a ma min dira i n’a fɔ sɔsɔli. translateO bɛ sɛrɛ ta ka sɔsɔli filanan Changer ka kɛ dalilu sabanan ye. Misali la, translate("abcdef", "abc", "XYZ") bɛ XYZdef bɔ.

Nin XPath baarakɛcogo kɛrɛnkɛrɛnnen ninnu kɔ fɛ, baarakɛcogo damadɔ wɛrɛw bɛ yen minnu bɛ baara Kɛ i n’a fɔ u JavaScript ɲɔgɔnnaw — walima u ɲɔgɔnna minnu bɛ porogaramukan suguya bɛɛ la jɔnjɔn na — n’a sɔrɔla i fana bɛna nafa Sɔrɔ minnu na, i n’a fɔ duguma, sanfɛla, round, sum, ani a ɲɔgɔnnaw. Nin demo in bɛ o baara kelen-kelen bɛɛ jira: Aw ye Pen XPath Jatebla baarakɛcogo [forked] lajɛ Bryan Rasmussen fɛ. A kɔlɔsi ko i n’a fɔ sɛrɛkili manipule baarakɛcogo fanba, jatebla caman bɛ donna kelen ta. O bɛ Kɛ, tiɲɛ na, bari u ka kan ka Kɛ ɲininkaliw ye, i n’a fɔ XPath misali laban in na: //li[dakun (sɛbɛnni()) > 250]/@val

N'i y'u Kɛ, i n'a fɔ misali fanba b'a Kɛ cogo min na, i bɛ laban k'a Boli node fɔlɔ kan min bɛ Bɛn sira ma. Sugu-yɔrɔ-ko-baara dɔw fana bɛ yen n’a sɔrɔla i ka kan k’u yɛrɛ Kɔrɔbɔ bawo JavaScript b’a yɛrɛ ka suguya-yɔrɔ-ko gɛlɛyaw sɔrɔ kaban. Nka waati dɔw bɛ Se ka Kɛ i b’a fɛ ka sɛrɛkili dɔ Yɛlɛma ka Kɛ jatebla ye walasa k’a Lajɛ ni jatebla wɛrɛ ye. Baarakɛcogo minnu bɛ fɛn suguya sigi sen kan olu ye boolean, number, string ani node ye. Olu ye XPath datatypes nafamaw ye. Wa i n’a fɔ i b’a miiri cogo min na, o baara ninnu fanba bɛ se ka kɛ kunnafonidilan suguyaw kan minnu tɛ DOM node ye. Misali la, substring-after bɛ sɛrɛ ta i n’a fɔ an y’a Dabɔ cogo min na kaban, nka a bɛ Se ka Kɛ sɛrɛ ye min bɛ Bɔ href fɛn dɔ la. A fana bɛ se ka kɛ juru ye dɔrɔn:

const testSubstringAfter = document.queryXPaths("substring-kɔfɛ('bonjour diɲɛ',' ')");

A jɛlen don ko nin misali in bɛna jaabiw sɛrɛkili segin an ma i n'a fɔ ["diɲɛ"]. Walasa k’o jira wale la, n ye demo page dɔ kɛ ni baarakɛcogo ye fɛnw kama minnu tɛ DOM nodes ye: Aw ye Pen queryXPath [forked] lajɛ min kɛra Bryan Rasmussen fɛ. I ka kan ka bamanankan-falen-falen-falen-falen-falen kabakoma dɔ Kɔlɔsi, n’o ye ko ni taamaʃyɛn dɔ b’i bolo sɔsɔli filanan na (i n’a fɔ i b’a fɛ ka bamanankan-sɛbɛn minnu bamanankan na, olu lisɛli) ni taamaʃyɛn bɛnnin tɛ i bolo ka baara Kɛ ni min ye, o taamaʃyɛn bɛ Bɔ bɔli la. O cogo la, nin:

translate('Bonjour, Ne Tɔgɔ ye Inigo Montoya ye, i ye ne fa faga, i labɛn ka sa','abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,','*')

...jaabiw bɛ sɔrɔ sɛrɛkili la, yɔrɔw fana sen bɛ o la: [" * * ** "]

O kɔrɔ ye ko “a” sɛbɛnni bɛ baara Kɛ ni dolow ye (*), nka taamaʃyɛn tɔ kelen-kelen bɛɛ min bamanankan-falen tɛ ni laɲini-sɛbɛn ye, o bɛ Bɔ pewu. Yɔrɔ finman de ye an ka fɛn bɛɛ ye“a” taamaʃyɛnw ni ɲɔgɔn cɛ minnu bamanankanna. O kɔ fɛ fana, nin ɲininkali in:

translate('Bonjour, Ne Tɔgɔ ye Inigo Montoya ye, i ye ne fa faga, i labɛn ka sa','abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,','**************************************************')")

...gɛlɛya tɛ a la wa a bɛ nɔ bɔ min bɛ i n’a fɔ nin:

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

A bɛ se ka kɛ i ɲɛ na ko fɛɛrɛ nɔgɔn tɛ JavaScript kɔnɔ walasa ka XPath bamanankan baarakɛcogo bɛ min kɛ tigitigi, hali n’a y’a sɔrɔ baarakɛcogo caman na, replaceAll ni kumasen kɔrɔw bɛ se k’o ɲɛnabɔ. I bɛ Se ka baara Kɛ ni n ye fɛɛrɛ kelen min Jira, nka o ye suboptimal ye n’i b’a fɛ min ye ka sɛrɛw baara. Nin demo in bɛ XPath ka bamanankan baarakɛcogo dafa walasa ka JavaScript bɔko dɔ di: Aw ye Pen bamanankan baarakɛcogo [forked] lajɛ Bryan Rasmussen fɛ. I bɛ se ka baara kɛ ni nin ɲɔgɔnna fɛn ye min? Aw ye Caesar Cipher ka kodɔn jateminɛ ni yɔrɔ saba ye (misali la, sanfɛla sirili kabini san 48 K.Ɲ.):

translate("Sesar b'a fɛ ka Rubicon tigɛ!", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "XYZABCDEFGHIJKLMNOPQRSTUVWxyzabcdefghijklmnopqrstuvw") Kalanjɛ ni sɛbɛnni: kalanjɛ ni sɛbɛnni gafew.

Input text “Sezar b’a fɛ ka Rubicon tigɛ!” o bɛ sɔrɔ “Zxbpxo fp mixkkfkd ql zolpp qeb Oryfzlk!” Walasa ka misali teliya wɛrɛ Di seko ni dɔnko danfaralenw ma, n ye nɛgɛ baarakɛcogo dɔ Kɛ min bɛ sɛrɛkili donta ta ka baara Kɛ ni bamanankan baarakɛcogo ye walasa ka sɛbɛnni Lasegin, o la, taamaʃyɛn bɛɛ bɛ yen minnu bɛ umlauts (umlauts) ta. Aw ye Pen metal baarakɛcogo lajɛ [forked] min kɛra Bryan Rasmussen fɛ.

konst nɛgɛ = (str) => { . segin bamanankan bamanankan(str, "AOUaou","ÄÖÜäöü"); } .

Ani, ni sɛbɛn dira a ma ko “Motley Crue bɛ sariyaw sigi, fara dudew kan!”, a bɛ segin “Mötley Crüe rüles, röck ön düdes!” A jɛlen don ko mɔgɔ bɛ Se ka baara in Kɛ ni parodi (parodie) sugu bɛɛ ye o baara in na. N’o ye e ye, o tuma na, nin TVTropes barokun in ka kan ka dusudon caman di i ma. Baara kɛli ni CSS ye ni XPath ye Aw k’aw hakili to an ka kunba la min bɛ baara kɛ ni CSS sugandilikɛlaw ye ɲɔgɔn fɛ ni XPath ye: CSS bɛ kalasi ye min ye, o faamuya kosɛbɛ, k’a sɔrɔ i bɛ se ka min kɛ ni XPath ye, o ye kalasi fɛnsɛbɛnni sɛrɛkiliw sumalenw ye. O bɛna baara kɛ a fanba la. Nka n’i tùn bɛ Se ka Kɛ ko dɔ la don dɔ, n’a Fɔra ko mɔgɔ dɔ ye kalasi dɔw Dabɔ minnu tɔgɔ ye ko .primaryLinks ani .primaryLinks2 ani n’i tùn bɛ baara Kɛ ni XPath ye walasa ka .primaryLinks kalasi Sɔrɔ, o tuma na, a ka c’a la, i bɛna gɛlɛyaw Sɔrɔ. Ni o ɲɔgɔnna hakilintan foyi t’a la, n’a sɔrɔla i bɛna baara kɛ ni XPath ye. Nka ne dusu kasira k’a fɔ ko ne ye baara kɛ yɔrɔw la, mɔgɔw bɛ o hakilintan suguw kɛ yɔrɔ minnu na. Nin ye demo wɛrɛ ye min bɛ baara kɛ ni CSS ni XPath ye ɲɔgɔn fɛ. A b’a Jira min bɛ Kɛ n’an bɛ baara Kɛ ni kode ye walasa ka XPath dɔ Kɛ contexte node kan min tɛ sɛbɛn in node ye. Aw ye Pen css ni xpath lajɛ ɲɔgɔn fɛ [forked] Bryan Rasmussen fɛ. CSS ɲininkali ye .relatedarticles a ye, min bɛ a fɛn fila in ta div kɔnɔ min dira .relatedarticles kalasi ma. O kɔ fɛ, ɲininkali “jugu” saba bɛ Kɛ, o kɔrɔ ye ko ɲininkali minnu t’an b’a fɛ u ka min Kɛ n’u bɛ boli ni nin fɛn ninnu ye i n’a fɔ ‘kɔnɔna-yɔrɔ. N bɛ se k’a ɲɛfɔ mun na u bɛ u yɛrɛ minɛ cogo wɛrɛ la ka tɛmɛ i bɛ se ka miiri min na. Ɲininkali jugu saba minnu bɛ ɲininkali kɛ olu ye:

//text(): A bɛ sɛbɛnni bɛɛ segin sɛbɛn kɔnɔ. //a/text(): A bɛ sɛbɛnni bɛɛ segin jɛgɛnsira kɔnɔ sɛbɛn kɔnɔ. ./a/text(): A tɛ jaabi si di.

Nin jaabi ninnu sababu ye ko k’a sɔrɔ i ka ko kɛlen ye fɛnw ye minnu seginna ka bɔ CSS ɲininkali la, // bɛ taa sɛbɛn bɛɛ sɔsɔ. Nin ye XPath fanga ye; CSS tɛ Se ka Bɔ node dɔ la ka Taa bɛnbakɛ dɔ ma ka sɔrɔ ka Taa o bɛnbakɛ balimakɛ dɔ la, ka Taa jigin ka Taa o balimakɛ bɔnsɔn dɔ la. Nka XPath bɛ se ka kɛ. O waati kelen na, ./ bɛ ɲininkali kɛ sisan node denw na, yɔrɔ min na dot (.) bɛ node sisan jira, ani ɲɛfɛla slash (/) bɛ taa den node dɔw la — n’a kɛra fɛn ye, n’a kɛra fɛn ye, walima sɛbɛnni ye, o bɛ latigɛ sira yɔrɔ nata fɛ. Nka den tɛ yen element min sugandira CSS ɲininkali fɛ, o cogo la o ɲininkali fana tɛ foyi Lasegin. Ɲininkali ɲuman saba bɛ o demo laban in na:

.//sɛbɛnni(), . ./sɛbɛnni(), . normalize-space (./sɛbɛnni ()).

Normalize-space ɲininkali bɛ XPath baarakɛcogo jira, nka a bɛ gɛlɛya dɔ fana ɲɛnabɔ min bɛ ɲininkali tɔw kɔnɔ. HTML labɛnna nin cogo in na:

Ka i ka fɛnw sɛgɛsɛgɛli kɛ otomatiki la ni Selenium WebDriver ye

Ɲininkali bɛ layini balo dɔ segin sɛbɛnni node daminɛ ni a laban na,ani normalize-space bɛ o bɔ yen. Baara kɛli ni XPath baarakɛcogo o baarakɛcogo ye min bɛ fɛn wɛrɛ Lasegin min tɛ boolean ye ni donna XPath ye, o bɛ tali Kɛ baarakɛcogo wɛrɛw la. Nin demo in bɛ misali damadɔ jira: Aw ye Pen xpath baarakɛcogo misaliw lajɛ [forked] Bryan Rasmussen fɛ. Misali fɔlɔ bɛ gɛlɛya dɔ jira i ka kan ka i janto min na. Kɛrɛnkɛrɛnnenya la, nin kode ninnu:

document.queryXPaths("substring-kɔfɛ(//a/@href,'https://')");

...a bɛ sɛrɛ kelen segin:

"www.smashingmagazine.com/2018/04/fɛn-sɛgɛsɛgɛli-seleniyɔmu-webdriver/".

A bɛ se ka kɛ, tiɲɛ tɛ? O baarakɛcogo ninnu tɛ sɛrɛkiliw Lasegin nka u bɛ sɛrɛ kelen walima jateden kelenw Lasegin. Baara in kɛli yɔrɔ o yɔrɔ ni jaabi caman bɛ sɔrɔ, o bɛ jaabi fɔlɔ dɔrɔn de lasegin. O jaabi filanan b’a jira an b’a fɛ min na tiɲɛ na:

sɛbɛn.ɲininkaliCSSSelectors("a").ɲininkaliXPaths("substring-kɔfɛ(./@href,'https://')");

O bɛ segin ka sɛrɛkili fila labɛn:

["www.smashingmagazine.com/2018/04/feature-testing-selenium-webdriver/","www.smashingmagazine.com/2022/11/otomatiki-sɛgɛsɛgɛli-jaabiw-ka-se-se-se-cogo-ɲɛnamaya/"]

XPath baarakɛcogo bɛ Se ka Kɛ 'yɔrɔ la i n'a fɔ baarakɛcogo minnu bɛ JavaScript kɔnɔ. O la, n’an bɛ Smashing Magazine URL sigicogo dɔn, an bɛ se ka ninnu kɛ (ka baara kɛ ni template literals ye, o de ka ɲi): `bamanankan bamanankan( substring( substring-a kɔfɛ(./@href, ‘www.smashingmagazine.com/’) Kalanjɛ ni sɛbɛnni: kalanjɛ ni sɛbɛnni gafew. ,9), '/','')`

O bɛ ka gɛlɛya dɔɔnin fo ka se a dan na, a mago bɛ kumasenw na minnu b’a ka baara ɲɛfɔ: URL bɛɛ ta ka bɔ href fɛnsɛbɛn na www.smashingmagazine.com/ kɔfɛ, ka taamasiyɛn kɔnɔntɔn fɔlɔw bɔ, ka sɔrɔ ka ɲɛfɛla sɛgɛsɛgɛli (/) taamasiyɛn baara foyi la walasa ka bɔ ɲɛfɛla laban laban na. O ɲɔgɔnna sɛrɛkili min bɛ sɔrɔ:

["feature-testing-selenium-webdriver","otomatiki-sɛgɛsɛgɛli-jaabiw-bɛ-sɔrɔ-cogo-ɲɛnabɔ"]

XPath Baarakɛcogo caman wɛrɛw XPath bɛ se ka yeelen bɔ tiɲɛ na kɔrɔbɔli la. O sababu yeli man gɛlɛn, bawo XPath bɛ Se ka Kɛ ka DOM kɔnɔfɛn bɛɛ Sɔrɔ, ka Bɔ jɔyɔrɔ o jɔyɔrɔ la DOM kɔnɔ, k’a sɔrɔ CSS tɛ Se. I tɛ se ka jate kɛ CSS kalanw na minnu bɛ to cogo kelen na bi jɔli siratigɛ caman na, nka ni XPath ye, an bɛ se ka bɛnkan barikamaw kɛ ka ɲɛsin fɛn dɔ sɛbɛnni kɔnɔkow ye min ye, DOM sigicogo caman cili mana kɛ min o min ye. Sɛgɛsɛgɛli kɛra fɛɛrɛw kan minnu b’a to i bɛ se ka XPath sɛgɛsɛgɛliw kɛ minnu bɛ se ka muɲu. Foyi tɛ juguya ka tɛmɛn ka sɛgɛsɛgɛliw kɛ ka bɔ kɛnɛ kan ka dɛsɛ dɔrɔn bawo CSS sugandilikɛlan tɛ baara kɛ tugun bawo fɛn dɔ tɔgɔ jiginna walima ka bɔ yen. XPath fana ka bon tiɲɛ na yɔrɔ caman bɔli la. Fɛɛrɛ caman bɛ yen minnu bɛ se ka baara kɛ ni XPath ɲininkaliw ye walasa ka fɛn dɔ bɛn ɲɔgɔn ma. O cogo kelen de bɛ CSS fana na. Nka XPath ɲininkaliw bɛ Se ka fɛnw sɛgɛsɛgɛ cogo la min ɲɛsinnen bɛ kosɛbɛ min bɛ dan Kɛ fɛn minnu bɛ Segin, o b’a To i bɛ bɛnkan kɛrɛnkɛrɛnnen dɔ Sɔrɔ yɔrɔ min na bɛnkan damadɔ bɛ Se ka Kɛ yen. Misali la, an bɛ se ka baara kɛ ni XPath ye walasa ka h2 yɔrɔ kɛrɛnkɛrɛnnen dɔ segin min bɛ div kɔnɔ min bɛ tugu balimakɛ div dɔ kɔ o yɔrɔnin bɛɛ min, a kɔfɛ, denmisɛnnin ja yɔrɔ dɔ bɛ sɔrɔ min kan ni data-testID="leader" fɛn ye:

ye
ye

aw kana nin kumakun in sɔrɔ

ye

aw kana nin kunkanko in fana sɔrɔ

ye

kunnafoni ɲɛmɔgɔ ja

ye

Nin ye ɲininkali ye: sɛbɛn.ɲininkaliXPaths(` //div[ tugu-tugu-balimakɛ::div[1] /img[@data-testID='ɲɛmɔgɔ']. ] . /h2/ . sɛbɛnni() . `);

An k’a jira ko demo dɔ don walasa k’a dɔn o bɛɛ bɛ na ɲɔgɔn fɛ cogo min na: Aw ye Pen Complex H2 ɲininkali [forked] lajɛ Bryan Rasmussen fɛ. O la sa, ɔwɔ. Sira caman bɛ yen minnu bɛ Se ka Kɛ ka Taa fɛn o fɛn na kɔrɔbɔli la ni XPath ye. XSLT 1.0 Dɛsɛ N y’a Fɔ a daminɛ na ko Chrome jɛkulu b’a fɛ ka XSLT 1.0 dɛmɛni Bɔ navigatɔrɔn na. O nafa ka bon bawo XSLT 1.0 bɛ baara Kɛ ni porogaramuw ye minnu sinsinnen bɛ XML kan sɛbɛnw caman cili kama minnu bɛ tali Kɛ XPath 1.0 la, o min bɛ Sɔrɔ navigatɔrɔ fanba la. N’o Kɛra, an bɛna XPath yɔrɔ koloma dɔ Bɔnɛ. Nka n’i y’a jateminɛ ko XPath ka ɲi tiɲɛ na sɛgɛsɛgɛliw sɛbɛnni na, n y’a ye ko a ka c’a la ko XPath bɛɛ bɛna tunun yanni dɔɔnin cɛ. O fɔlen, n y’a kɔlɔsi ko mɔgɔw bɛ u mago don fɛn dɔ la n’a bɔra a la. Wa o ye tiɲɛ ye tiɲɛ na ni XSLT 1.0 bɛ ka tiɲɛ. Baro bɛɛ bɛ ka kɛ Hacker News la min falen bɛ sɔsɔliw la minnu bɛ o dɔgɔyali in kɛlɛ. Poste yɛrɛ ye misali ɲuman ye ka bulɔgudalan dɔ Dabɔ ni XSLT ye. Ibɛ se ka baro kalan i yɛrɛ ye, nka a bɛ don cogo min na JavaScript bɛ se ka kɛ shim ye XLST fɛ walasa k’o ko suguw ɲɛnabɔ. N ye hakilinaw fana ye minnu b’a jira ko navigatɔrɔw ka kan ka baara kɛ ni SaxonJS ye, n’o ye JavaScript ka Saxon XSLT, XQUERY ani XPath motɛriw doncogo ye. O ye hakilina duman ye, kɛrɛnkɛrɛnnenya la, n’o ye Saxon-JS bɛ nin fɛnɲɛnɛmaw labɛncogo sisan waleya, k’a sɔrɔ navigatɔrɔ si tɛ yen min bɛ XPath walima XSLT bɔko si waleya ka tɛmɛ 1.0 kan, wa a si tɛ yen min bɛ XQuery waleya. N ye n bolo da Norm Tovey-Walsh kan Saxonica, n’o ye SaxonJS ni Saxon motɛri suguya wɛrɛw kɔfɛ baarakɛda ye. A ko: “Ni navigatɛri feerela dɔ tun b’a fɛ ka SaxonJS ta k’a kɛ daminɛ ye walasa ka bi XML fɛɛrɛw don navigatɔrɔ kɔnɔ, an tun bɛna nisɔndiya ka baro kɛ o kan n’u ye.”— Norm Tovey-Walsh

Nka a y’a fara a kan fana ko: “Ne bɛna kabakoya kosɛbɛ ni mɔgɔ dɔ y’a miiri ko ka SaxonJS ta a cogo la sisan, k’a fili navigatɔrɔn jɔli la k’a sɔrɔ a ma Changé, o bɛna kɛ fɛɛrɛ ɲuman ye. Navigatɛri feerela, k’a sababu kɛ u bɛ navigatɔrɔn dilan, o bɛ se ka gɛrɛ o jɛɲɔgɔnya la cogo la min ka dun kosɛbɛ ka tɛmɛ an bɛ se ka min kɛ ‘ka bɔ kɛnɛma’.”— Norm Tovey-Walsh

A ka kan k’a dɔn ko Tovey-Walsh ka kuma fɔra dɔgɔkun kelen ɲɔgɔn ka kɔn XSLT ka dɔgɔyali laseli ɲɛ. Kuncɛli N tun bɛ se ka taa ɲɛ ka taa ɲɛ. Nka n jigi b’a kan ko nin ye XPath fanga jira ani ka misali caman di aw ma minnu b’a baaracogo jira walasa ka kobaw sɔrɔ. O ye misali dafalen ye fɛɛrɛ kɔrɔw kan navigatɔrɔn kulu kɔnɔ min nafa ka bon hali bi, hali n’i ma deli k’a dɔn ko a bɛ yen walima n’i m’a jateminɛ abada k’i bolo se a ma. Kalan wɛrɛw

“Enhancing the Resiliency of Automated Web Tests with Natural Language” (ACM Digital Library) min sɛbɛnna Maroun Ayli, Youssef Bakouny, Nader Jalloul ani Rima Kilany fɛNin barokun bɛ XPath misali caman di sɛgɛsɛgɛliw sɛbɛnni na minnu bɛ se ka muɲu. XPath (MDN)Nin ye yɔrɔ ɲumanba ye ka daminɛ n’i b’a fɛ ka fɛɛrɛ ɲɛfɔli sɔrɔ min bɛ XPath baara cogo ɲɛfɔ ka ɲɛ. XPath Tutorial (ZVON)N y’a ye ko nin kalan in de ye n dɛmɛ kosɛbɛ n yɛrɛ ka kalan na, k’a sababu kɛ misali caman ye ani ɲɛfɔli jɛlenw. XPatherNin baarakɛminɛn in b’a to i ka baara kɛ ni kode ye k’a ɲɛsin a ma.

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