milvanb
milvanb
#qa
#testowanieoprogramowania

Mirki, mam dziwny case do automatyzacji w pracy.

Mianowicie mam zebrać wszystkie paragrafy z cytowanych wypowiedzi na webapce i potem to wyeksportować do jsona.

Use case jest taki, że mamy w produkcie opinie użytkowników i chcemy walidowac te wypowiedzi z naszym CMS.

Jak w strukturze DOM
Imię "cytat"

Które są pod class="nazwaklasy"

Wyciągnąć wszystkie wartości, które mają cudzysłów?

Używamy js i Cypressa jako framework, próbuje to zrobić przez cy.get().contains ("").then

I potem czytać wartość ale nie działa
0
  • Najlepsze
  • Wszystkie komentarze
milvanb
milvanb
@henk: w sumie z tej strony na to nie patrzyłem. Chodziło mi o to, że możnaby zrobić coś takiego, że iterujemy po domie w poszukiwaniu wszystkich "", bez tego zagnieżdżania w . I wtedy niezależnie jak dev by napisał atrybuty, wtedy bankowo będzie działało
1
el_doopa
el_doopa
@milvanb: nie możesz pobrać wszystkich paragrafów a później przefiltrować kolekcje tak aby brać tylko te które zawierają cudzysłów?
0
milvanb
milvanb
@el_doopa: No wlasnie jak cos takiego zrobic? Znalazlem jakas strone, na ktorej widzę podobieństwo w strukturze: https://agoldoffish.wordpress.com/criminal-minds-opening-and-closing-quotes/

do zmiennej quote podstawilem document.getElementByTag('p') i w sumie teraz musialbym to w jakas petle wziac i wyconsolowac wartości?
0
milvanb
milvanb
Teraz udało mi się to wrzucić w pętlę

let allParagraphs = document.getElementByTagName('p')

for (let i = 0; i < allParagraphs.length; i++) { console.log(allParagraphs[1]) }

To
0
henk
@milvanb: cypress nie pozwala na użycie xpatha? Chyba pozwala...
0
milvanb
milvanb
@henk: wlasnie nie chce na sztywno tego robic.

Chcialbym cos takiego:

znalezc wszystkie elementy , potem to przeksztalcic w tekst i iterowac po kazdym w ktorym znajde wyrazenie regex z tym cudzyslowem

No i generalnie nie wiem jak to napisac, bo mam document.querySelectorAll('p')
0
henk
@milvanb: co to znaczy na sztywno? co to za różnica, czy weźmiesz wszystkie paragrafy xpathem, czy CSS selektorem? Żadna. Za tą xpath od razu pozwala ci znaleźć tylko te nody z cudzyslowiem //p[contains(text(), '"')]

No i w ogóle to bez sensu brać wszystkie paragrafy, skoro interesują cię tylko te, które mają jakąś klasę, czy tam jakiś ich rodzic ma konkretną klasę.
0
milvanb
milvanb
@henk: hm, nadal nie wiem co zrobic, bo rzeczywiscie xpath tutaj wylapuje tylko te paragrafy, ktore maja cudzyslow. I co dalej :(
0
henk
@milvanb: no przelatujesz po kolekcji tych webelementów i wywołujesz na nich element.getText().match('".+"')[0] czy tam innerText zamiast getText() bo nie wiem co tam w cypresie jest do zbierania tekstu z webelementu.

A jak element jest bardziej skomplikowany, że innerText nie zwraca tego co chcesz, to zawsze możesz użyć .childNodes[i].nodeValue
0
milvanb
milvanb
@henk: a kurde, chyba za glupi na to jestem :D
0
Przegrywek123
@el_doopa: weź tak -
- pobierz kolekcję wszystkich elementów z klasą "class="nazwaklasy""
- przefiltruj ją pod kątem spełniania warunku element posiada dziecko lub sam posiada ciąg znaków który matchuje coś na takim regexpie "([^"]*)"

to
0
milvanb
milvanb
@Przegrywek123: hm, mam cos podobnego, ale nadal nie nie działa :(
0
el_doopa
el_doopa
@Przegrywek123: ale po co mnie wołasz a nie OPa?
0
Przegrywek123
@el_doopa: a bo mi się pomyliło, przepraszam :<
0