C# Wykonujący operacje na stronie internetowej.

0

Witam, mam problem z doszukaniem się podpowiedzi na temat używania C# w operacjach na stronach internetowych

Przykładowo: do pola o id 'X' wstaw wartość '5', a następnie użyj przycisku [KLIK], poczekaj aż 'czas' doleci do 0 i sprawdź czy wynik w polu 'RESULT' jest blabla....

1

Selenium + WebDriver dla c#

0
teo215 napisał(a):

Selenium + WebDriver dla c#

Dziękuje :)

0

Chciałeś powiedzieć IWebDriver ;) WebDriver jest dla javy i całej reszty. Zresztą WebDriver i IWebDriver ma inne funkcje

0

Prosty przykład, mogę coś walnąć bo z głowy piszę jak to w selenium wygląda

IWebDriver myDriver = new FireFoxDriver(); // Proponuje tutaj żebyś zaczoł bo do Reszty musisz ściągnąć drivery

myDriver.Nawigate().Url("twój url"); // Nie musisz dodawać żadnego Waita, przy uzyciu funkcji Nawigate Navigate ;) program sam przezkoczy dalej dopiero jak strona się załaduje w 100%

/* Musi być try bo wywali Ci, najlepiej robić to w funkcjach bool zwracajacych true i false dzieki czemu robisz tak */

/*
if(jakasfunkcja() == false)
{
// Dodanie komunikatu 
return;
}
// Jak jest dobrze przechodzi dalej
*/

try
{
IWebElement element= myDriver.FindElements(By.Id("X"));
element.SendKey("5");
/* W zaleźnosci w co ma kliknac albo szukasz elementu prawdopodobnie tak */
IWebElement mySubmit = myDriver.FindElement(By.TagName("Submit"))

// mySubmit.Size jestes wstanie pobrac jego rozmiar. Dzieki czemu mozesz zrobic sobie fajna logike do tego ponizej

/* Bardzo fajna użyteczna sprawa klikniecie w element  */

Actions action = new Actions(myDriver);
                action.MoveToElement(mySubmit).MoveByOffset(10, 10).Click().Perform(); // Przenosimy sie na przycisk oraz w ByOffset klikamy w jakis punkt przycisku

                Thread.Sleep(100); // Odczekujemy jakis czas na załadowanie 

CheackSendTrue(); // odpalamy funkcje sprawdzajaca wystapienie jakies frazy
}
catch{}

 

Co do sprawdzenia samej frazy za pomoca selenium czyli czy cos dobrze jest wykonane jest banalne ;) Nie interesuje nas, czy JS tym operuje czy cos jest ukryte kodowane czy nie. Interesuje nas czy fraza jest wyswietlana dla uzytkownika

 

IWebElement element =   myDriver.FindElement(By.TagName("body")); // Zawsze tak samo i zawsze to jest. Przechodzimy do ciała strony
string pageViewText = element.Text; // przypisujemy do stringa z wszystkich widocznych elementów text 

int index = PageText.IndexOf("Fraza jakiej szukamy");

// i teraz jak index == -1 oznacza że nie znalazło frazy. A jak != -1 to znaczy że znalazło

I tak masz tutaj przykład rozwiązania. Podepnij sobie to pod jakąś spójną logikę i jazda ;) Pisanie botów nie było jeszcze nigdy tak proste.

0

A i jak chcesz np pobrać jakas wartość to najlepiej zrobić to tak

 
IWebElement element myDriver.FindElement(By); // Tutaj masz naprawdę mega pole do popisu
string value = element.GetAttribute("nazwa atryburu"); //value / type /Text / co tam chcesz a element to poziasa

i potem porównujesz value czy sie zgadza. Tak wyciągasz parametry. Problem jest w SetAtrribute ;/ niestety IWebDriver tego nie oferuje w przeciwieństwie do WebDriver. Musisz posłużyć się JS a najlepiej JQuery

Przykład jak wstrzykiwać żeby zmienić atrybut

 
 /*  Tworzenie skryptu o postaci */
            /* jQuery('#NazwaID a').attr('target', '_self'); */ //keySearch - id elementu _type - rodzaj (a iframe input button) "Stosujesz przy zgniezdrzeniu elementu w divie cos w stylu Xpatch"

string atrybut = "target";
string value = "_self";

// To u góry jest przykładem do zrozumienia atrr('target','_self') na jakiej zasadzie działa 


            string jQuery = "jQuery('#" + keySearch + " " + _type + "').attr('target', '_self');";

/* Wstrzykniecie  */
            IJavaScriptExecutor js = (IJavaScriptExecutor)myDriver;
            js.ExecuteScript(jQuery);


Resztę, myślę że wyszukasz sobie sam jak chcesz na tym pracować.

1
  1. Co to za moda że robimy try-catch z pustym catch ?
  2. Nigdy nie używamy Thread.Sleep :)
0
  1. przyklad
  2. opisalem juz wait ze wywala jak nie znajdzie elemwntu glownie na stronach z przekierowaniem. Tchred jest mi potrzebny

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