Jaka petla dla dynamicznego stringa lub zmiennej?

0

Mam zagwozdke. Pewna strona posiada zmienne wartosci ktore zmienia sie przyciskiem na stronie. Jaka petle powinienem uzyc aby petla dzialal do chwili znalezienia true. True bedzie to zawartosc czesci stringa z calosci dynamicznego stringa. Przyklad zmienna A pobrana za pierwszym razem zmienia wartosc po nacisnieciu przycisku na stronie. Jak mam nadpisywac string lub zmienna w C# i jakiej petli mam uzyc?

0

Zwykle się stosuje mechanizmy eventów, event np. jakaś funkcja przy wywołaniu ma dopisaną do funkcji eventów jakąś funkcję i ją wywołuje tym samym powiadamia inne częsci kodu.

Czekanie i sprawdzanie to takie brute force metoda i obciąża procka.

Albo wywołująca funkcja wywołuje inne, albo jakaś funkcja ciągle sprawdza i potem reaguje nie wiem czy jest jeszcze jakaś metoda inna, albo nie mam pomysłu akurat.

1

Jeśli czytanie danych ze strony, nie zajmuje zbyt wiele czasu, to while ze sleepem, czy czymkolwiek innym wymienionym wyżej.

Jeżeli jednak trwa to zbyt długo, to postaraj się żeby aplikacja informowała Twój program o zmianie.

0

Skoro zmiana następuje po naciśnięciu przycisku to nie ma potrzeby stosowania pętli. Wystarczy po każdej wciśnięciu przycisku przeszukać tekst pod kątem tego co cię interesuje.

0

@var: @MexikanoS @Szalony Programista Chodzi o to iz przycisk na stronie musi byc wciskany przez aplikacje do chwili wystapienia zawartosci textu. Tutaj jes kod ktory puszcza petle lcz jej nie zatrzymuje:

               IWebElement searchbox = driver.FindElement(By.Id("button"));
                searchbox.Click();
                string text = driver.FindElement(By.Id("abc")).GetAttribute("innerHTML");
                var a = text("xxx");
                var b = text("yyy");

                Console.WriteLine(text);
                                
                do
                {
                    IWebElement searchbox = driver.FindElement(By.Id("button"));
                    searchbox.Click();
                    text = driver.FindElement(By.Id("abc")).GetAttribute("innerHTML");
                    Console.WriteLine(text);
                    Console.WriteLine(a);
                    Console.WriteLine(b);
                    if (a || b) break;
                }

                while (b == false || a == false);

Ta petla nigdy sie nie zatrzymuje. Mozna prosic o kawalek kodu z podpowiedzia do rozwiazania mojego problemu?

1
           string s;
            do
            {
                //cośtam.click()
                s = GetText();

            } while (s.Contains("test", StringComparison.OrdinalIgnoreCase) == false);

0

Wydaje sie ze to dziala. A jak moge dodac do while 2 rozne wartosci ktore chce znalezc? Chce wyszukac w stringu ciag znakow xxx lub yyy.

while (s.Contains("test", StringComparison.OrdinalIgnoreCase) == false || s.Contains("text", StringComparison.OrdinalIgnoreCase) == false);

Ten zapis powoduje infinity loop.

1

Widziałeś kiedyś jakiś tutorial do C#, bo czytania książki od Ciebie nie oczekuję? Powiem szerzej, programowałeś coś większego niż "hello world" w dowolnym języku?

0

Dzieki za podpowiedz juz dziala. Zmylila mnie bliskosc do PHP i myslalem ze nalezy uzywac tego samego znaku dla "lub". Dzieki wielkie teraz smiga ze hej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1