Skelbimas
Žiniatinklio tikrinimas yra labai naudingas norint automatizuoti tam tikras užduotis, kurios reguliariai atliekamos svetainėse. Galite parašyti tikrintuvą, kad galėtumėte sąveikauti su svetaine, kaip tai darytų žmogus.
Į ankstesnis straipsnis Kaip sukurti pagrindinį žiniatinklio tikrintuvą, kad būtų galima gauti informaciją iš svetainėsAr kada nors norėjote užfiksuoti informaciją iš svetainės? Štai kaip parašyti tikrinimo programą, skirtą naršyti svetainėje ir išgauti tai, ko jums reikia. Skaityti daugiau , apžvelgėme rašymo pagrindus a interneto tikrinimo programa Kas yra žiniatinklio įbrėžimas? Kaip rinkti duomenis iš svetainiųAr kada nors praradote brangų laiką skaitydami tinklalapių duomenis? Štai kaip rasti norimus duomenis naudojant žiniatinklio grandymą. Skaityti daugiau naudojant python modulį, scrapy. Šio metodo apribojimas yra tas, kad tikrinimo programa nepalaiko javascript. Jis tinkamai neveiks su tomis svetainėmis, kuriose naudotojo sąsajai tvarkyti intensyviai naudojamas javascript. Tokiose situacijose galite parašyti tikrintuvą, kuris naudoja „Google Chrome“ ir todėl gali tvarkyti „Javascript“ kaip įprasta vartotojo valdoma „Chrome“ naršyklė.
„Google Chrome“ automatizavimas apima įrankio, vadinamo, naudojimą Selenas. Tai programinės įrangos komponentas, esantis tarp jūsų programos ir naršyklės ir padedantis valdyti naršyklę per programą. Šiame straipsnyje apžvelgsime visą „Google Chrome“ automatizavimo procesą. Veiksmai paprastai apima:
- Seleno nustatymas
- „Google Chrome Inspector“ naudojimas tinklalapio skyriams nustatyti
- „Java“ programos, skirtos „Google Chrome“ automatizavimui, rašymas
Straipsnio tikslais leiskite mums ištirti, kaip skaityti "Google Mail" iš "Java". Nors „Google“ teikia API (Application Programming Interface) laiškams skaityti, šiame straipsnyje mes naudojame „Selenium“ sąveikauti su „Google Mail“, kad parodytume procesą. Google Mail intensyviai naudoja javascript, todėl yra geras kandidatas mokytis seleno.
Seleno nustatymas
Žiniatinklio tvarkyklė
Kaip paaiškinta aukščiau, Selenas susideda iš programinės įrangos komponento, kuris veikia kaip atskiras procesas ir atlieka veiksmus Java programos vardu. Šis komponentas vadinamas Žiniatinklio tvarkyklė ir turi būti atsiųstas į savo kompiuterį.
Paspauskite čia Norėdami eiti į Selenium atsisiuntimo svetainę, spustelėkite naujausią leidimą ir atsisiųskite savo kompiuterio OS („Windows“, „Linux“ arba „MacOS“) tinkamą failą. Tai ZIP archyvas, kuriame yra chromedriver.exe. Ištraukite jį į tinkamą vietą, pvz C:\WebDrivers\chromedriver.exe. Šią vietą naudosime vėliau java programoje.
Java moduliai
Kitas žingsnis yra nustatyti Java modulius, reikalingus naudoti Selenium. Darant prielaidą, kad java programai kurti naudojate Maven, pridėkite šią priklausomybę POM.xml.
org.seleniumhq.selenium selenas-java 3.8.1
Kai vykdote kūrimo procesą, visi reikalingi moduliai turi būti atsisiųsti ir nustatyti kompiuteryje.
Pirmieji seleno žingsniai
Pradėkime nuo seleno. Pirmas žingsnis yra sukurti a ChromeDriver instancija:
WebDriver tvarkyklė = new ChromeDriver();
Tai turėtų atidaryti „Google Chrome“ langą. Eikime į „Google“ paieškos puslapį.
driver.get(" http://www.google.com");
Gaukite nuorodą į teksto įvesties elementą, kad galėtume atlikti paiešką. Teksto įvesties elementas turi pavadinimą q. Puslapyje randame HTML elementus naudodami metodą WebDriver.findElement().
WebElement elementas = driver.findElement (By.name("q"));
Naudodami metodą galite siųsti tekstą į bet kurį elementą sendKeys(). Išsiųskime paieškos terminą ir užbaigkime jį nauja eilute, kad paieška prasidėtų nedelsiant.
element.sendKeys("terminatorius\n");
Dabar, kai vykdoma paieška, turime palaukti rezultatų puslapio. Tai galime padaryti taip:
new WebDriverWait (tvarkyklė, 10) .until (d -> d.getTitle().toLowerCase().startsWith("terminatorius"));
Šis kodas iš esmės nurodo Seleniui palaukti 10 sekundžių ir grįžti, kai prasideda puslapio pavadinimas terminatorius. Naudojame lambda funkciją norėdami nurodyti sąlygą, kurios reikia laukti.
Dabar galime gauti puslapio pavadinimą.
System.out.println("Pavadinimas: " + driver.getTitle());
Kai baigsite seansą, naršyklės langą galima uždaryti naudojant:
vairuotojas.quit();
Ir tai, žmonės, yra paprasta naršyklės sesija, valdoma naudojant Java per seleną. Atrodo gana paprasta, bet leidžia užprogramuoti daug dalykų, kuriuos įprastai tektų daryti rankomis.
„Google Chrome Inspector“ naudojimas
Google Chrome inspektorius Išsiaiškinkite svetainės problemas naudojant „Chrome“ kūrėjo įrankius arba „Firebug“.Jei iki šiol sekėte mano „jQuery“ mokymo programas, galbūt jau susidūrėte su kai kuriomis kodo problemomis ir nežinote, kaip jas išspręsti. Kai susiduriate su neveikiančiu kodo bitu, tai labai... Skaityti daugiau yra neįkainojamas įrankis elementams, kuriuos reikia naudoti su selenu, atpažinti. Tai leidžia mums nukreipti tikslų elementą iš „Java“, kad gautume informaciją, taip pat interaktyvų veiksmą, pvz., mygtuko paspaudimą. Čia yra inspektoriaus naudojimo pradžiamokslis.
Atidarykite „Google Chrome“ ir eikite į puslapį, tarkime, IMDb puslapį Teisingumo lyga (2017 m.).
Raskime elementą, į kurį norime taikyti, tarkime filmo santrauką. Dešiniuoju pelės mygtuku spustelėkite santrauką ir iškylančiajame meniu pasirinkite „Tikrinti“.
Iš skirtuko „Elementai“ matome, kad santraukos tekstas yra a div su klase santraukos_tekstas.
CSS arba XPath naudojimas pasirinkimui
Selenas palaiko elementų pasirinkimą iš puslapio naudojant CSS. (Palaikoma CSS tarmė CSS2). Pavyzdžiui, norėdami pasirinkti santraukos tekstą iš aukščiau esančio IMDb puslapio, parašytume:
WebElement summaryEl = driver.findElement (By.cssSelector("div.summary_text"));
Taip pat galite naudoti XPath norėdami pasirinkti elementus labai panašiu būdu (Go čia dėl specifikacijų). Vėlgi, norėdami pasirinkti santraukos tekstą, darytume:
WebElement summaryEl = driver.findElement (By.xpath("//div[@class='summary_text']"));
XPath ir CSS turi panašias galimybes, todėl galite naudoti tuos, kurie jums patinka.
„Google Mail“ skaitymas iš „Java“.
Dabar panagrinėkime sudėtingesnį pavyzdį: „Google Mail“ gavimą.
Paleiskite „Chrome“ tvarkyklę, eikite į gmail.com ir palaukite, kol puslapis bus įkeltas.
WebDriver tvarkyklė = new ChromeDriver(); driver.get(" https://gmail.com"); new WebDriverWait (tvarkyklė, 10) .until (d -> d.getTitle().toLowerCase().startsWith("gmail"));
Tada ieškokite el. pašto lauko (jis pavadintas ID identifikatoriaus ID) ir įveskite el. pašto adresą. Spustelėkite Kitas mygtuką ir palaukite, kol bus įkeltas slaptažodžio puslapis.
/* Įveskite vartotojo vardą / el. paštą */ { driver.findElement (By.cssSelector("#identifierId")).sendKeys (el. paštas); driver.findElement (By.cssSelector(".RveJvd")).click(); } naujas WebDriverWait (tvarkyklė, 10) .iki (d ->! d.findElements (By.xpath("//div[@id='slaptažodis']")).isEmpty() );
Dabar įvedame slaptažodį, spustelėkite Kitas ir palaukite, kol bus įkeltas „Gmail“ puslapis.
/* Įveskite slaptažodį */ { driver .findElement (By.xpath("//div[@id='password']//input[@type='password']")) .sendKeys (slaptažodis); driver.findElement (By.cssSelector(".RveJvd")).click(); } naujas WebDriverWait (tvarkyklė, 10) .iki (d ->! d.findElements (By.xpath("//div[@class='Cp']")).isEmpty() );
Gaukite el. pašto eilučių sąrašą ir perveskite kiekvieną įrašą.
Sąrašasrows = vairuotojas .findElements (By.xpath("//div[@class='Cp']//table/tbody/tr")); for (WebElement tr: rows) { }
Kiekvienam įrašui atsiųskite Iš lauke. Atminkite, kad kai kurie „Iš“ įrašai gali turėti kelis elementus, atsižvelgiant į pokalbyje dalyvaujančių žmonių skaičių.
{ /* Iš elemento */ System.out.println("Iš: "); for (WebElement e: tr .findElements (By.xpath(".//div[@class='yW']/*"))) { System.out.println(" " + e.getAttribute("el. paštas") + ", " + e.getAttribute("pavadinimas") + ", " + e.getText()); } }
Dabar paimk temą.
{ /* Tema */ System.out.println("Sub: " + tr.findElement (By.xpath(".//div[@class='yNN']")).getText()); }
Ir pranešimo data ir laikas.
{ /* Data/Laikas */ WebElement dt = tr.findElement (By.xpath("./td[8]/*")); System.out.println("Data: " + dt.getAttribute("pavadinimas") + ", " + dt.getText()); }
Čia pateikiamas bendras el. laiškų eilučių skaičius puslapyje.
System.out.println (rows.size() + " laiškai.");
Ir galiausiai baigėme, todėl išjungiame naršyklę.
vairuotojas.quit();
Apibendrinant galima pasakyti, kad galite naudoti Selenium su „Google Chrome“, kad tikrintumėte tas svetaines, kuriose daug naudojamas „Javascript“. O naudojant „Google Chrome Inspector“ yra gana lengva sukurti reikiamą CSS arba XPath, kad būtų galima išgauti iš elemento arba su juo sąveikauti.
Ar turite kokių nors projektų, kuriems naudinga naudoti seleną? Ir su kokiomis problemomis susiduriate? Prašome apibūdinti toliau pateiktuose komentaruose.