static void Main(string[] args) { IWebDriver driver = new PhantomJSDriver(); var url = "http://www.urbanspoon.com/r/1/1291/restaurant/Internacional-District/Seattle-Deli-Seattle"; driver.Navigate().GoToUrl(url); var name = driver.FindElements(By.CssSelector("span6>h1")).First().Text; var phone = driver.FindElements(By.CssSelector(".phone.tel")).First().Text; var rating = driver.FindElements(By.CssSelector(".avarage.digits.rating")).First().Text.Split('\r')[0]; var votes = driver.FindElements(By.CssSelector(".total")).First().Text.Split(' ')[0]; var sw = new StreamWriter(@"output.csv"); var csvWriter = new CsvHelper.CsvWriter(sw); csvWriter.WriteField(name); csvWriter.WriteField(phone); csvWriter.WriteField(rating); csvWriter.WriteField(votes); csvWriter.NextRecord(); csvWriter.WriteField(name + " Hello! "); csvWriter.WriteField(phone); csvWriter.WriteField(rating); csvWriter.WriteField(votes); csvWriter.NextRecord(); sw.Flush(); }
void crawl(string number) { var driverService = PhantomJSDriverService.CreateDefaultService(Environment.CurrentDirectory); driverService.HideCommandPromptWindow = true; IWebDriver driver = new PhantomJSDriver(driverService); driver.Navigate().GoToUrl("https://www.truecaller.com/"); try { // ((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(@"E:\Haider\Haider\Beautiful Soup\img1.jpg", ScreenshotImageFormat.Jpeg); var set = driver.FindElement(By.ClassName("searchbar__query")); set.SendKeys("+" + number); var button = driver.FindElement(By.ClassName("searchbar__submit")); string js = "arguments[0].click();"; ((IJavaScriptExecutor)driver).ExecuteScript(js, button); Thread.Sleep(10); driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10); string name = ""; string other_details = ""; Loboloba.Text = ""; foreach (var element in driver.FindElements(By.CssSelector("div.profile-name"))) { Loboloba.Text += name = element.Text + Environment.NewLine; } foreach (var element in driver.FindElements(By.CssSelector("div.profile-details-text"))) { Loboloba.Text += other_details = element.Text + Environment.NewLine; } } catch (Exception e) { MessageBox.Show(e.Message); } finally { driver.Close(); driver.Quit(); } }
private void GetChapterComicPage() { var service = PhantomJSDriverService.CreateDefaultService(); service.DiskCache = true; service.IgnoreSslErrors = true; service.HideCommandPromptWindow = true; service.LoadImages = false; service.ProxyType = "none"; service.LocalToRemoteUrlAccess = true; PhantomJSDriver driver = new PhantomJSDriver(service, new PhantomJSOptions(), TimeSpan.FromSeconds(120)); driver.Navigate().GoToUrl(Url); var element = driver.FindElementById("page_select"); foreach (var pages in driver.FindElements(By.XPath("//*[@id=\"page_select\"]/option"))) { var page = new ComicPage(); page.PageImgUrl = "https:" + pages.GetAttribute("value"); page.PageNo = pages.Text.GetNumber(); _comicPageList.Add(page); } driver.Close(); driver.Dispose(); }
public void MyTest(string chromePath = null) { var path = chromePath ?? System.Environment.CurrentDirectory; var options = new PhantomJSOptions(); using (var webDriver = new PhantomJSDriver(path, options) { Url = "https://stackoverflow.com/users/login" }) { Wait(webDriver, "Log In - Stack Overflow"); Assert.AreEqual("Log In - Stack Overflow", webDriver.Title); var loginPageObject = new LoginPageObject(); PageFactory.InitElements(webDriver, loginPageObject); var username = ConfigurationManager.AppSettings["Username"]; var password = ConfigurationManager.AppSettings["Password"]; loginPageObject.Login(username, password); Wait(webDriver, "Stack Overflow - Where Developers Learn, Share, & Build Careers"); Assert.AreEqual("Stack Overflow - Where Developers Learn, Share, & Build Careers", webDriver.Title); var questionList = webDriver.FindElements(By.CssSelector(".question-summary.narrow.tagged-interesting")); Assert.IsTrue(questionList.Count > 1); } }
static void Main(string[] args) { var urls = new List <string>(); PhantomJSDriver driver = new PhantomJSDriver(); driver.Navigate().GoToUrl(link); for (int i = 1; i < 9; i++) { var pages = driver.FindElements(By.ClassName("pages")); HtmlDocument document = new HtmlDocument(); document.LoadHtml(driver.PageSource); var cars = document.DocumentNode.SelectNodes(".//div[@class='vehicle-title clearfix']"); foreach (var car in cars) { var carDetail = car.SelectSingleNode(".//a"); var url = carDetail.GetAttributeValue("href", ""); if (!urls.Contains(url)) { urls.Add(url); } } if (i == 8) { break; } pages.ElementAt(i).Click(); Thread.Sleep(1000); } Console.ReadKey(); }
public static List <string> GetSpiderResults(this PhantomJSDriver driver, string query) { try { var querySplitArr = query.Split('@'); var queryStr = querySplitArr[0]; var queryAttribute = querySplitArr[1]; var finedElements = driver.FindElements(By.CssSelector(queryStr)); var spiderResultList = new List <SpiderQueryResult>(); var spiderResult = new List <string>(); foreach (var elementItem in finedElements) { if (queryAttribute == "text") { spiderResult.Add(elementItem.Text); } else if (queryAttribute == "html") { spiderResult.Add(elementItem.GetAttribute("innerHTML")); } else { spiderResult.Add(elementItem.GetAttribute(queryAttribute)); } } return(spiderResult); } catch (Exception exc) { Console.WriteLine(exc.Message); } return(default(List <string>)); }
public void scrapCinemaName(string googleURL) { IWebDriver driver = new PhantomJSDriver(); var url = googleURL; driver.Navigate().GoToUrl(url); for (int i = 0; i < 5; i++) { //add current page cinemas var cinemasName = scrapOnePageCinema(driver); //add all allCinemas.AddRange(cinemasName); //Go goto next on current page try { var nextUrl = driver.FindElements(By.PartialLinkText("Next")).Last().GetAttribute("href"); driver.Navigate().GoToUrl(nextUrl); } catch (InvalidOperationException e) { //Console.WriteLine(e.Source); } } //close driver driver.Dispose(); }
static void Main(string[] args) { IWebDriver driver = new PhantomJSDriver(); driver.Navigate().GoToUrl("https://www.google.com/#q=site:linkedin.com%2Fin%2F+jhon+tech"); var allLinks = new List <string>(); for (int i = 0; i < 30; i++) { List <string> linksList = ExtractElementsSinglePage(driver); allLinks.AddRange(linksList); var nextUrl = driver.FindElements(By.PartialLinkText("Next")).Last().GetAttribute("href"); driver.Navigate().GoToUrl(nextUrl); } var uniqueUrls = allLinks.Distinct().ToList(); }
public async Task <int> SetIp(string ip, string userEmail) { IWebDriver browser; var driverdir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); browser = new PhantomJSDriver(driverdir); browser.Manage().Window.Maximize(); browser.Navigate().GoToUrl("https://www.sharedproxies.com/user.php?s=api"); IWebElement name = browser.FindElement(By.Id("Username")); IWebElement password = browser.FindElement(By.Name("Password")); name.SendKeys("lebedev1"); password.SendKeys("PfTcjijzIQHZHmzVRx1z" + Keys.Enter); IWebElement home = browser.FindElements(By.ClassName("buttonscontainer1")).First().FindElements(By.ClassName("buttons4")).First().FindElement(By.TagName("a")); home.Click(); browser.FindElements(By.TagName("a")).First(f => f.Text == "Change Authorized IPs").Click(); List <IWebElement> ips = browser.FindElement(By.Id("addipform")).FindElements(By.TagName("input")).ToList(); bool isNullContains = false; int idValue = 0; for (int i = 0; (ips.Count() - 1) > i; i++) { if (ips[i].GetAttribute("value") == "") { isNullContains = true; idValue = i; break; } } if (!isNullContains) { return(1); } ips[idValue].SendKeys(ip); IWebElement submitButton = browser.FindElements(By.TagName("input")).First(s => s.GetAttribute("value") == "Save Authorized IPs"); submitButton.Click(); return(2); }
/// <summary> /// 解析文件所含的全部资源 /// </summary> /// <param name="url"></param> public string SaveFromExtraFile(string url, Guid taskId) { using (var driver = new PhantomJSDriver(GetPhantomJSDriverService())) { $"正在加载地址:{url}...".Log(true); driver.Navigate().GoToUrl(url); //最大化窗口 MaxBrowser(driver); "正在调整浏览器窗体大小...".Log(true); //第1次加载更多 //用户的分享超过一屏时 IWebElement moreShare = null; try { moreShare = driver.FindElement(By.LinkText("更多")); } catch { "该用户可分享的内容少于一屏,跳过流程解析...".Log(true); } if (moreShare != null) { "正在点击页面的“更多”按钮...".Log(true); driver.FindElement(By.LinkText("更多")).Click(); System.Threading.Thread.Sleep(2000); "正在加载第二页内容...".Log(true); "第二页内容加载完成...".Log(true); //获取需要滚动加载的次数 "正在计算全部需要加载的页数...".Log(true); var cardCount = int.Parse(driver.FindElements(By.CssSelector("._fd86t")).First().Text.Replace(",", "")); var scrollCount = cardCount / 12 == 0 ? cardCount / 12 : (cardCount / 12) + 1; $"计算完成,全部需要加载{scrollCount}页...".Log(true); //默认滚动条移动到y轴3000的位置 var initialC = 3000; var i = 0; "开始执行脚本,滚动鼠标...".Log(true); do { //if (i > 20)//预设只滚动20次,太多次容易卡顿 // break; $"第{i + 1}次滚动...".Log(true); ((IJavaScriptExecutor)driver).ExecuteScript($"scrollTo(0,{initialC});"); System.Threading.Thread.Sleep(1000 + (i * 50)); i++; initialC += 500;//每次递增滚动500的距离 } while (i < scrollCount); } "页面所有内容全部加载完成...".Log(true); var insDir = url.Substring(url.LastIndexOf('/') + 1); "正在解析下载的资源...".Log(true); ExtraDownloadSource(driver.PageSource, taskId); driver.Quit(); return(insDir); } }
public void GetData(string upc) { foreach (var site in sites) { try { Dictionary <string, string> results = new Dictionary <string, string>(); driver.Url = "https://www.amazon.com/"; driver.Navigate(); RandomWait(); driver.FindElement(By.Id("twotabsearchtextbox")).Clear(); RandomWait(); driver.FindElement(By.Id("twotabsearchtextbox")).SendKeys(upc); RandomWait(); driver.FindElement(By.ClassName("nav-search-submit")).FindElement(By.ClassName("nav-input")).Click(); RandomWait(); var elem = driver.FindElement(By.CssSelector("[class='a-link-normal s-access-detail-page s-color-twister-title-link a-text-normal']")); results.Add("Name", elem.Text); results.Add("URL", elem.GetAttribute("href")); driver.Url = results["URL"]; driver.Navigate(); RandomWait(); results.Add("Price", driver.FindElement(By.Id("priceblock_ourprice")).Text); var elementsASIN = driver.FindElements(By.XPath("//th[contains(text(), 'ASIN')]/parent::tr/td")) .Concat(driver.FindElements(By.XPath("//*[contains(text(), 'ASIN:')]/parent::li"))); if (elementsASIN.Any()) { results.Add("ASIN", elementsASIN.First().Text.Replace("ASIN:", "")); } else { // get it from URL throw new Exception("Cannot find ASIN"); } Directory.CreateDirectory(Path.Combine(DATA_PATH, results["ASIN"])); //Directory.CreateDirectory(Path.Combine(DATA_PATH, results["ASIN"], site.Name)); File.WriteAllLines(Path.Combine(DATA_PATH, results["ASIN"], "results.txt"), results.Select(kvp => string.Join("|", kvp.Key, kvp.Value))); } catch (Exception ex) { File.WriteAllText(Path.Combine(ERROR_PATH, DateTime.Now.ToString("yyyyMMddTHHmmss") + ".html"), driver.PageSource); } } }
/// <summary> /// Select first available for registration date from UI calendar /// </summary> /// <param name="currentMonth">Current calendar month</param> /// <param name="registryFom">lower checking line</param> /// <param name="registryTo">higher checking line</param> /// <returns></returns> protected virtual bool SelectRegistrationDate(DateTime currentMonth, DateTime registryFom, DateTime registryTo) { _logger.Trace($"Start SelectRegistrationDate. Error = {Error}. currentMonth = {currentMonth}. registryFom = {registryFom}. registryTo = {registryTo}"); ReadOnlyCollection <IWebElement> queryCollection; try { var infoText = FindElementWithChecking(By.Id(ErrorMessage)).Text; if (infoText.IsNotBlank()) { _logger.Warn("label with error message is not blank. Thrown new NoSuchElementException"); throw new NoSuchElementException(); } queryCollection = _driver.FindElements(By.ClassName(AvailableData)); } catch (Exception ex) when(ex is NoSuchElementException || ex is WebDriverException) { _logger.Warn("Here is no available dates!!!"); return(false); } var availableRange = GetAvailableRange(currentMonth, registryFom, registryTo); foreach (var element in queryCollection) { var date = element.Text.ConvertToIntOrNull(); if (date == null || date.Value > availableRange.Item2 || //endDate date.Value < availableRange.Item1) //startDate { continue; } if (ReEnterCaptcha) { _logger.Info($"GetFirstDate. First available date.Value = {date.Value}. But ReEnterCaptcha = True"); return(true); } _logger.Info( $"GetFirstDate. date.Value = {date.Value} element Click"); OutData = string.Format(ResManager.GetString(ResKeys.DateSelected_Message), $"{date.Value} {GetCalendarHeader()[1].Text}"); element.Click(); return(true); } return(false); }
/// <summary> /// Método responsável por retornar uma lista com as vagas anunciadas pela empresa /// </summary> /// <param name="poPhantom">Objeto phantomjsdriver</param> /// <param name="pstrCode">Codigo da empresa</param> /// <returns></returns> private static List <LinkedinVagas> GetOfficials(PhantomJSDriver poPhantom, string pstrCode) { var loModel = new List <LinkedinVagas>(); poPhantom.Navigate().GoToUrl($"https://www.linkedin.com/jobs/search/?locationId=OTHERS%2Eworldwide&f_C={pstrCode}"); if (poPhantom.FindElements(By.ClassName("job-card__link-wrapper")).Count() > 0) { var jobs = poPhantom.FindElements(By.ClassName("job-card__link-wrapper")); for (int lintCont = 0; lintCont < jobs.Count; lintCont++) { var model = new LinkedinVagas(); model.Vaga = jobs[lintCont].FindElement(By.ClassName("truncate-multiline--last-line-wrapper")).Text; model.Descricao = jobs[lintCont].FindElement(By.ClassName("job-card__description-snippet")).Text; model.Local = jobs[lintCont].FindElement(By.ClassName("job-card__location")).Text; loModel.Add(model); } } return(loModel); }
public override bool Execute(PhantomJSDriver driver) { try { var passwordBox = driver.FindElements(By.TagName("input")) .FirstOrDefault(e => e.GetAttribute("type").Contains("password")); var userEmailBox = driver.FindElements(By.TagName("input")) .FirstOrDefault( e => e.GetAttribute("type").Contains("email") || e.GetAttribute("name").Contains("email") || e.GetAttribute("type").Contains("user") || e.GetAttribute("name").Contains("user")); userEmailBox.SendKeys(Parameters[0]); passwordBox.SendKeys(Parameters[1]); driver.FindElementByTagName("form").Submit(); return(true); } catch (Exception) { //Something went wrong return(false); } }
static void Main(string[] args) { IWebDriver driver = new PhantomJSDriver(); var url = "http://en.wikipedia.org/wiki/Web_scraping"; driver.Navigate().GoToUrl(url); var titles = driver.FindElements(By.CssSelector("#firstHeading")); var myFirstScrape = titles.First().Text; Console.WriteLine(myFirstScrape); Console.ReadLine(); }
private News GetNews(PhantomJSDriver driver, CrawlerPartConfig cpc, Uri uri, int threadId, int milliseconds) { string title = driver.FindElement(By.XPath(cpc.Title_Xpath)).Text; var contentcollection = driver.FindElements(By.XPath(cpc.Content_Xpath)); string content = string.Empty; foreach (var item in contentcollection) { content += item.Text; } string source = string.Empty; string editor = string.Empty; DateTime?publishtime = null; if (!string.IsNullOrEmpty(cpc.Source_Xpath)) { source = driver.FindElement(By.XPath(cpc.Source_Xpath)).Text; } if (!string.IsNullOrEmpty(cpc.Editor_Xpath)) { editor = driver.FindElement(By.XPath(cpc.Editor_Xpath)).Text; } if (!string.IsNullOrEmpty(cpc.PublishTime_Xpath)) { publishtime = Convert.ToDateTime(driver.FindElement(By.XPath(cpc.PublishTime_Xpath)).Text.TrimStart().Substring(0, 16)); } News news = new News() { Id = Guid.NewGuid(), CrawlerConfigId = cpc.CrawlerConfigId, Title = title, Content = content, Editor = editor, Source = source, Address = uri.ToString(), SpendTime = milliseconds, ThreadId = threadId, PublishTime = publishtime }; //WriteLog.InsertLogs(uri.ToString(), "步骤二"); return(news); }
private IWebElement FindElementIfExists(By by) { try { IWebElement webElement; new WebDriverWait(driver, TimeSpan.FromSeconds(web_el_wait)).Until(ExpectedConditions.ElementExists(by)); var webElements = driver.FindElements(by); if (webElements.Count >= 1) { webElement = webElements.First <IWebElement>(); } else { webElement = null; } return(webElement); } catch { return(null); } }
static void Main(string[] args) { IWebDriver driver = new PhantomJSDriver(); var url = "http://en.wikipedia.org/wiki/Web_scraping"; driver.Navigate().GoToUrl(url); var tocElements = driver.FindElements(By.CssSelector("#toc>ul")); var allElements = tocElements[0].FindElements(By.TagName("li")); var allRefs = new List <string>(); foreach (var item in allElements) { var textOnly = String.Join(" ", item.Text.Split(' ').Skip(1)); allRefs.Add(textOnly); } Console.WriteLine(allRefs.ToString()); Console.Read(); }
private void StartSync(CrawlerPartConfig cpc, string Address, ref List <Target> List_tar) { try { Uri uri = new Uri(Address); if (cpc.FetchModel == 1) { PhantomJSDriver driver = sc.StartSync(uri, null, null); var titlecollection = driver.FindElements(By.XPath(cpc.IndexLink_XPath)); foreach (var item in titlecollection) { if (!string.IsNullOrEmpty(item.Text)) { Target t = new Target { Name = item.Text, Uri = item.GetAttribute("href"), Operation = null, CPC = cpc }; List_tar.Add(t); } } driver.Quit(); } else if (cpc.FetchModel == 3) { Operation opera = new Operation { Action = (x) => { x.FindElement(By.XPath(cpc.LoadMoreButton_XPath)).Click(); }, Condition = (x) => { return(!x.FindElement(By.XPath(cpc.ExtentionData1)).Displayed); }, Timeout = 10000, ExtentionData1 = cpc.ExtentionData1, ExtentionData2 = cpc.ExtentionData2, ExtentionData3 = cpc.ExtentionData3 }; PhantomJSDriver driver = sc.StartSync(uri, null, opera); var titlecollection = driver.FindElements(By.XPath(cpc.IndexLink_XPath)); foreach (var item in titlecollection) { if (!string.IsNullOrEmpty(item.Text)) { Target t = new Target { Name = item.Text, Uri = item.GetAttribute("href"), Operation = null, CPC = cpc }; List_tar.Add(t); } } driver.Quit(); } else if (cpc.FetchModel == 5) { Script script = new Script() { Code = "document.body.scrollTop=10000", Condition = (x) => { return(!x.FindElement(By.XPath(cpc.ExtentionData1)).Displayed); }, ActionTimes = Convert.ToInt32(cpc.ExtentionData4), FetchModel = 5, Timeout = 10000 }; PhantomJSDriver driver = sc.StartSync(uri, script, null); var titlecollection = driver.FindElements(By.XPath(cpc.IndexLink_XPath)); foreach (var item in titlecollection) { if (!string.IsNullOrEmpty(item.Text)) { Target t = new Target { Name = item.Text, Uri = item.GetAttribute("href"), Operation = null, CPC = cpc }; List_tar.Add(t); } } driver.Quit(); } } catch (Exception ex) { throw ex; } }
public bool Login(string email1, string password) { List <MyPlaylist> myplaylists = new List <MyPlaylist>(); MyPlaylist playlist1 = new MyPlaylist(); List <MyPlaylist> myPlaylist = new List <MyPlaylist>(); var service = PhantomJSDriverService.CreateDefaultService(); service.HideCommandPromptWindow = true; IWebDriver driver = new PhantomJSDriver(service); driver.Url = "http://www.playzer.fr/customer/login"; driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); Thread.Sleep(TimeSpan.FromSeconds(1)); driver.FindElement(By.Id("customer_login_login")).SendKeys(email1); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); driver.FindElement(By.Id("customer_login_password")).SendKeys(password); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); IWebElement btn = driver.FindElements(By.XPath(".//button[@onclick]"))[1]; IJavaScriptExecutor js = (IJavaScriptExecutor)driver; js.ExecuteScript("arguments[0].click();", btn); Thread.Sleep(TimeSpan.FromSeconds(1)); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); driver.Navigate().GoToUrl("http://www.playzer.fr/customer/account"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); string s = driver.FindElement(By.XPath("//*[@id='account']/div/h2[1]")).Text; Thread.Sleep(TimeSpan.FromSeconds(1)); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); if ("You are not logged in" == s) { return(false); } else { if (!File.Exists(email1 + "Playlists.txt")) { driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); IWebElement nav_menu = driver.FindElement(By.Id("nav_menu")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", nav_menu); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='nav_menu']/ul"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='nav_menu']/ul/div[1]"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='nav_menu']/ul/div[1]/div[2]"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.Id("menu_myplaylists"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); IReadOnlyCollection <IWebElement> all_playlist = driver.FindElements(By.XPath("//div[@class='content home_playlist transition']")); Thread.Sleep(TimeSpan.FromSeconds(1)); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); int i = 1; foreach (IWebElement playlist in all_playlist) { string id = playlist.GetAttribute("id"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IWebElement playlist_option_btn = driver.FindElement(By.XPath("//*[@id='" + id + "_options" + "']")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); js.ExecuteScript("arguments[0].click();", playlist_option_btn); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IWebElement edit_btn = driver.FindElement(By.XPath("//div[@class='edit transition']")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); js.ExecuteScript("arguments[0].click();", edit_btn); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IWebElement song_items = driver.FindElement(By.XPath("//ul[@id='playlist_items']")); Thread.Sleep(TimeSpan.FromSeconds(1)); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IReadOnlyCollection <IWebElement> songs = song_items.FindElements(By.ClassName("content")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); playlist1 = new MyPlaylist(); playlist1.Title = driver.FindElement(By.XPath("//*[@id='playlist_edit_name']")).GetAttribute("value"); playlist1.SelectedId = i; foreach (IWebElement song in songs) { driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); string id_song = song.GetAttribute("id"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); string title = driver.FindElement(By.XPath("//*[@id='" + id_song + "']/div[4]")).Text; driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); string artist = driver.FindElement(By.XPath("//*[@id='" + id_song + "']/div[5]")).Text; driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); string url = driver.FindElement(By.XPath("//*[@id='" + id_song + "']/div[3]/img")).GetAttribute("src"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); Song track = new Song(title, artist, id_song, url, i); playlist1.Songs.Add(track); playlist1.NumOfSongs = songs.Count; playlist1.Url = url; } driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); myplaylists.Add(playlist1); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.Id("close_modify"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='playlist_options']/div[1]/img"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); i++; } driver.Close(); driver.Dispose(); driver.Quit(); PlaylistDetailsWindow.all_playlists = myplaylists; MainWindow.allPL = myplaylists; using (StreamWriter theWriter = new StreamWriter(email1 + "Playlists.txt")) { try { int cntlist = 0; foreach (MyPlaylist mp in myplaylists) { cntlist++; theWriter.WriteLine("PLAYLIST " + cntlist + "*#" + mp.Title + "*#" + mp.Url); theWriter.WriteLine(); int cntSong = 0; foreach (Song song in mp.Songs) { cntSong++; theWriter.WriteLine("SONG " + cntSong + "|?" + song.Id + "|?" + song.Title + "|?" + song.Artist + "|?" + song.Url); } } } catch (Exception ex) { } } using (StreamWriter theWriter = new StreamWriter(email1 + ".txt")) { try { theWriter.Write(password); } catch (Exception ex) { } } } else { List <MyPlaylist> plejliste = new List <MyPlaylist>(); string path1 = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string text = File.ReadAllText(Path.Combine(path1, email1 + "Playlists.txt")); string[] plist = text.Split(new string[] { "PLAYLIST " }, StringSplitOptions.None); foreach (string lists in plist) { if (lists != "") { MyPlaylist mpl = new MyPlaylist(); int selected; string[] items = lists.Split(new string[] { "*#" }, StringSplitOptions.None); Int32.TryParse(items[0], out selected); mpl.SelectedId = selected; mpl.Title = items[1]; mpl.Url = items[2].Split('\n')[0].Split('\r')[0]; string[] tracks = items[2].Split(new string[] { "\r\n\r\n" }, StringSplitOptions.None); string[] tr = tracks[1].Split(new string[] { "\r\n" }, StringSplitOptions.None); foreach (string track in tr) { if (track != "") { string[] song_stuff = track.Split(new string[] { "|?" }, StringSplitOptions.None); int selectedtr; Int32.TryParse(song_stuff[0].Split(' ')[1], out selectedtr); Song song = new Song(song_stuff[2], song_stuff[3], song_stuff[1], song_stuff[4], selectedtr); mpl.NumOfSongs = tr.Count() - 1; mpl.Songs.Add(song); } } plejliste.Add(mpl); } } MainWindow.allPL = plejliste; } driver.Quit(); return(true); } }
void addPlaylists(List <MyPlaylist> data) { List <Song> search_results = new List <Song>(); IReadOnlyCollection <IWebElement> search_content; List <string> search_content_ids = new List <string>(); List <MyPlaylist> plejliste = new List <MyPlaylist>(); MyPlaylist pl = new MyPlaylist(); List <MyPlaylist> lmp = new List <MyPlaylist>(); foreach (var playlist in data) { TrackInPlaylistControl control = new TrackInPlaylistControl(); control.Playlist = playlist; control.OnPlaylistSelected += async(s, e) => { Cursor = Cursors.Wait; try { if (!control.Added) { var service = PhantomJSDriverService.CreateDefaultService(); service.HideCommandPromptWindow = true; IWebDriver driver = new PhantomJSDriver(service); driver.Url = "http://www.playzer.fr/customer/login"; IJavaScriptExecutor js = (IJavaScriptExecutor)driver; driver.FindElement(By.Id("customer_login_login")).SendKeys(MainWindow.Email); driver.FindElement(By.Id("customer_login_password")).SendKeys(MainWindow.Pass); IWebElement btn = driver.FindElements(By.XPath(".//button[@onclick]"))[1]; js.ExecuteScript("arguments[0].click();", btn); Thread.Sleep(TimeSpan.FromSeconds(1)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='panel_search']/img"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); Thread.Sleep(TimeSpan.FromSeconds(1)); driver.FindElement(By.Id("search_engine")).SendKeys(MainWindow.sb); Thread.Sleep(TimeSpan.FromSeconds(2)); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); IWebElement result = driver.FindElement(By.Id("search_results")); search_content = result.FindElements(By.XPath("//div[@class='content transition search_item_content']")); int i = 1; foreach (IWebElement ids in search_content) { string song_id = ids.GetAttribute("id"); if (i == Track.Selected) { js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='" + song_id + "']"))); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='panel_history']"))); Thread.Sleep(TimeSpan.FromSeconds(1)); string songID = driver.FindElements(By.ClassName("bloc"))[0].GetAttribute("id"); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='" + songID + "_options']"))); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//div[@class='add transition']"))); driver.FindElement(By.Id("content_add_form")); IReadOnlyCollection <IWebElement> all_plist = driver.FindElements(By.XPath("//div[@class='item choice']")); int j = 1; foreach (IWebElement choice_id in all_plist) { if (j == control.Playlist.SelectedId) { driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='" + choice_id.GetAttribute("id") + "_status']"))); break; } j++; } break; } i++; } driver.Navigate().Refresh(); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.Id("menu_myplaylists"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); IReadOnlyCollection <IWebElement> all_playlist = driver.FindElements(By.XPath("//div[@class='content home_playlist transition']")); Thread.Sleep(TimeSpan.FromSeconds(2)); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); MyPlaylist playlist1 = new MyPlaylist(); int cnt = 1; foreach (MyPlaylist mp in LoadPlaylist()) { if (mp.SelectedId != control.Playlist.SelectedId) { plejliste.Add(mp); } } foreach (IWebElement playL in all_playlist) { try { string id = playL.GetAttribute("id"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IWebElement playlist_option_btn = driver.FindElement(By.XPath("//*[@id='" + id + "_options" + "']")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); js.ExecuteScript("arguments[0].click();", playlist_option_btn); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IWebElement edit_btn = driver.FindElement(By.XPath("//div[@class='edit transition']")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); js.ExecuteScript("arguments[0].click();", edit_btn); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IWebElement song_items = driver.FindElement(By.XPath("//ul[@id='playlist_items']")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IReadOnlyCollection <IWebElement> songs = song_items.FindElements(By.ClassName("content")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); playlist1 = new MyPlaylist(); playlist1.Title = driver.FindElement(By.XPath("//*[@id='playlist_edit_name']")).GetAttribute("value"); playlist1.SelectedId = 1; foreach (IWebElement song in songs) { driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); string id_song = song.GetAttribute("id"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); string title = driver.FindElement(By.XPath("//*[@id='" + id_song + "']/div[4]")).Text; driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); string artist = driver.FindElement(By.XPath("//*[@id='" + id_song + "']/div[5]")).Text; driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); string url = driver.FindElement(By.XPath("//*[@id='" + id_song + "']/div[3]/img")).GetAttribute("src"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); Song track = new Song(title, artist, id_song, url, i); playlist1.Songs.Add(track); playlist1.NumOfSongs = songs.Count; playlist1.Url = url; } plejliste.Add(playlist1); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.Id("close_modify"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='playlist_options']/div[1]/img"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); } catch (Exception ex) { } break; } driver.Close(); driver.Quit(); SaveToFile(plejliste); MessageBox.Show("Added to playlist " + playlist.Title, "Info", MessageBoxButton.OK, MessageBoxImage.Information); control.Added = true; MainWindow.changed = true; // MainWindow.allPL = plejliste; } } finally { Cursor = Cursors.Arrow; } }; stack.Children.Add(control); } }
static void Main(string[] args) { bool Cerrado = false; var driverService = PhantomJSDriverService.CreateDefaultService(); driverService.HideCommandPromptWindow = true; IWebDriver driver = new PhantomJSDriver(driverService); Console.WriteLine("Datos procesados"); Console.WriteLine("-----------------"); using (baseprod2Entities context = new baseprod2Entities()) { List <SP_S_LeadsNoProcesados_Scotiabank_Result> procesar = context.SP_S_LeadsNoProcesados_Scotiabank().ToList(); foreach (var lead in procesar) { driver.Navigate().GoToUrl("https://sac.scotiabank.indexa.cl/SAC/simular/Solicitud.asp?Tipo_Cuota=CI&tipocre=121&fpago=Cuenta+Corriente+&monto=" + lead.monto_credito + "&valor=" + lead.monto_credito + "&ncuotas=" + lead.nro_cuotas + "&primerpago=16%2F02%2F2018&mnp1=0&mnp2=0&SDesgravamen=&SCesantia=&Total_Financiar=3158266&Valor_Cuota=" + lead.valor_cuota + "&Impuesto_Pagare=25266&Monto_SeguroDesgravamen=0&Monto_SeguroCesantia=0&Total_Recargos=133000&canal_origen="); IWebElement qname = driver.FindElement(By.Name("nombre")); qname.SendKeys("Chile"); IWebElement qpaterno = driver.FindElement(By.Name("paterno")); qpaterno.SendKeys("autos"); IWebElement qmaterno = driver.FindElement(By.Name("materno")); qmaterno.SendKeys("SpA"); IWebElement qrut = driver.FindElement(By.Name("rut")); qrut.SendKeys(lead.rut.Replace("-", "")); IWebElement qtfijo = driver.FindElement(By.Name("tfijo")); qtfijo.SendKeys(lead.telefono); IWebElement qtcelular = driver.FindElement(By.Name("tcelular")); qtcelular.SendKeys(lead.telefono); IWebElement qemail = driver.FindElement(By.Name("email")); qemail.SendKeys(lead.email); IWebElement qrenta = driver.FindElement(By.Name("renta")); qrenta.SendKeys("0"); IWebElement qfnacimiento = driver.FindElement(By.Name("fnacimiento")); qfnacimiento.SendKeys("01/01/1998"); IWebElement qantiguedad = driver.FindElement(By.Name("antiguedad")); qantiguedad.SendKeys("2"); IWebElement qempleador = driver.FindElement(By.Name("empleador")); qempleador.SendKeys("Sin especificar"); IList <IWebElement> qtipocontratos = driver.FindElements(By.Name("tipocontrato")); qtipocontratos.ElementAt(0).Click(); driver.FindElement(By.ClassName("btn-simula-form")).Click(); driver.Manage().Timeouts().ImplicitWait = new TimeSpan(15); try { if (driver.FindElement(By.TagName("p")).Text.Contains("Nos comunicaremos al mail informado")) { //cambio el estado del lead SP_U_MarcaLeads_Scotiabank_Result resultado = context.SP_U_MarcaLeads_Scotiabank(lead.rut, lead.telefono, lead.email, lead.monto_credito, lead.nro_cuotas, lead.valor_cuota).FirstOrDefault(); if (resultado != null && resultado.actualizado == 1) { Console.WriteLine("Rut:" + lead.rut + ", Teléfono:" + lead.telefono + ", email:" + lead.email + ", monto crédito:" + lead.monto_credito + ", cuotas:" + lead.nro_cuotas + ", valor cuota:" + lead.valor_cuota); } } } catch (NoSuchElementException) { Console.WriteLine("No se procesó (por ahora)"); Console.WriteLine("Rut:" + lead.rut + ", Teléfono:" + lead.telefono + ", email:" + lead.email + ", monto crédito:" + lead.monto_credito + ", cuotas:" + lead.nro_cuotas + ", valor cuota:" + lead.valor_cuota); driver.Quit(); Cerrado = true; } finally { if (Cerrado) { driver = new PhantomJSDriver(driverService); } } } } driver.Quit(); }
public static String GetDpsLookupHtmlResult( String userName, String passWord, String searchBy, String query, Action <String, Int32> onStepChanged, Action <String> onCompleted) { //Instantiate web browser simulator onStepChanged("Instantiating PhantomJS...", 0); var driverService = PhantomJSDriverService.CreateDefaultService(); driverService.HideCommandPromptWindow = true; var webDriver = new PhantomJSDriver(driverService); try { //Navigate to the initial login page onStepChanged("Navigating to initial page...", 25); webDriver.Navigate().GoToUrl(DpsLookUpParser.InitialUrl); //Wait until page is loaded and login button is available var buttonLogin = webDriver.FindElement(By.Id("btnLogin")); //Populate login and password fields webDriver.FindElement(By.Name("UserName")).SendKeys(userName); webDriver.FindElement(By.Name("Password")).SendKeys(passWord); //Submit login onStepChanged("Submitting credentials...", 50); buttonLogin.Submit(); //Wait until the page loads DpsLookUpParser.WaitUntilPageIsLoaded(webDriver); //Check if login was correct if (webDriver.Url == DpsLookUpParser.InitialUrl) { //If URL remains the same, that does mean login failure throw new Exception("Incorrect credentials"); } else { //Browser is on a search page. Get the search category radiobuttons var checkboxesSearchType = webDriver.FindElements(By.Name("searchtype")); switch (searchBy) { case "vinnumber": checkboxesSearchType[0].Click(); break; case "licensenumber": checkboxesSearchType[1].Click(); break; default: throw new Exception("[searchBy] must be equal to 'vinnumber' or 'licensenumber'"); } //Populate input with the given VIM or license plate number webDriver.FindElement(By.Name("searchData")).SendKeys(query); //Submit input webDriver.FindElement(By.Name("search_now")).Submit(); //Wait until AJAX performs to the end so the table appears onStepChanged("Loading data...", 75); (new WebDriverWait(webDriver, DpsLookUpParser.Timeout)) .Until(ExpectedConditions.ElementExists(By.TagName("table"))); //Check if the query was correct if (webDriver.FindElements(By.ClassName("alert-error")).Count != 0) { //If there is HTML element with 'alert-error' class, that means data was wrong throw new Exception("[query] does not represent some existing [" + searchBy + "]"); } else { onStepChanged("Data has been successfully loaded!", 100); onCompleted(webDriver.PageSource); return(webDriver.PageSource); } } } catch (Exception exception) { driverService.Dispose(); webDriver.Quit(); throw exception; } finally { driverService.Dispose(); webDriver.Quit(); } }
/// <summary> /// 解析出需要下载的资源数并添加到数据库 /// </summary> /// <param name="htmlFilePath">已经解析的html文件</param> public void ExtraDownloadSource(string html, Guid taskId) { //解析出资源 var regExt = new Regex("\\<a\\s*href\\=\"(?<href>\\/p\\/\\S+\\/)\"\\>"); var matchs = regExt.Matches(html); var task = mediaService.GetMediatask(taskId); if (matchs != null && matchs.Count > 0) { for (int i = 0; i < matchs.Count; i++) { //明细页面路径 var url = baseHttpUrl + matchs[i].Groups["href"].Value; using (var driver = new PhantomJSDriver(PhantomJSDriverService.CreateDefaultService())) { //解析文件 $"正在浏览资源:{url}".Log(true); driver.Navigate().GoToUrl(url); var htmlDetail = driver.PageSource; IList <IWebElement> mediaUrls = new List <IWebElement>(); try { var img = driver.FindElementByCssSelector("._2di5p"); if (img != null) { mediaUrls.Add(img); "找到资源所在的唯一标签".Log(true); } } catch { mediaUrls = driver.FindElements(By.TagName("img")); "找到资源的img标签".Log(true); } driver.Quit(); foreach (var item in mediaUrls) { var mediaUrl = item.GetAttribute("src"); $"上传下载任务:{mediaUrl}".Log(true); mediaService.AddDownload(new DownloadEntity { DownloadId = Guid.NewGuid(), SortValue = DateTime.Now.ToString("yyyyMMddHHmmssfff"), Disabled = 0, Rec_CreateBy = Guid.Empty, Rec_CreateTime = DateTime.Now, Rec_ModifyBy = Guid.Empty, Rec_ModifyTime = DateTime.Now, HttpUrl = mediaUrl, DirName = task.Url.Substring(task.Url.LastIndexOf('/') + 1) }); } } } "该用户全部任务收集完毕!".Log(true); task.Disabled = 1; mediaService.UpdateMediatask(task); "更新用户资源解析任务的状态为已解析...".Log(true); } }
public static List <data> GetHistroyData(PublishMessage pmessage) { try { var dataList = new List <data>(); using (var seleminun = new PhantomJSDriver()) { string t = HttpUtility.UrlDecode(string.Format("{0}{1}", pmessage.DataTime.Value.Year, pmessage.DataTime.Value.Month.ToString("00"))); string url = string.Format("{0}&month={1}", pmessage.Url.Trim(), t); seleminun.Navigate().GoToUrl(url); Thread.Sleep(new Random().Next(1000, 2000)); var rowEs = seleminun.FindElements(By.XPath("//div[@class=\"row\"]/div/table/tbody/tr")); Console.WriteLine(rowEs.Count); string path = string.Format("{0}\\{1}", Environment.CurrentDirectory, "data"); { for (int rowIndex = 1; rowIndex < rowEs.Count; rowIndex++) { var trEs = rowEs[rowIndex].FindElements(By.XPath(".//td")); var tempdata = new data() { name = pmessage.Name }; tempdata.date = DateTime.Parse(trEs[0].Text); tempdata.aqi = trEs[1].Text; tempdata.rank = trEs[2].Text; int p25, p10, so2, co, no2, O3_8h; if (int.TryParse(trEs[3].Text, out p25)) { tempdata.pm2d5 = p25; } if (int.TryParse(trEs[4].Text, out p10)) { tempdata.pm10 = p10; } if (int.TryParse(trEs[5].Text, out so2)) { tempdata.so2 = so2; } if (int.TryParse(trEs[6].Text, out co)) { tempdata.co = co; } if (int.TryParse(trEs[7].Text, out no2)) { tempdata.no2 = no2; } if (int.TryParse(trEs[8].Text, out O3_8h)) { tempdata.no2 = no2; } tempdata.updatetime = DateTime.Now; dataList.Add(tempdata); } } } return(dataList); } catch (Exception err) { Console.WriteLine(err.Message); Console.WriteLine(err.StackTrace); return(null); } }
public static void TrackWithoutBrowser() { // initialize a WebDriver instance IWebDriver driver = new PhantomJSDriver(); WebDriverWait driverWait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); driver.Manage().Window.Maximize(); // load search page driver.Navigate().GoToUrl("http://www.purolator.com/purolator/ship-track/tracking-summary.page?submit=true&componentID=1359477580240"); // wait 5 seconds driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); // write page using (Stream stream = File.Open(@"d:\delete\selenium\1.html", FileMode.Create, FileAccess.ReadWrite)) { using (BinaryWriter writer = new BinaryWriter(stream)) { byte[] bytes = Encoding.UTF8.GetBytes(driver.PageSource); stream.Write(bytes, 0, bytes.Length); } } Console.WriteLine("Page title: " + driver.Title); // enter tracking number and submit IWebElement element = driver.FindElement(By.CssSelector("form textarea#search")); element.SendKeys("JFV242486848"); element.Submit(); //// wait 5 seconds //driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); //// write result page //using (Stream stream = File.Open(@"d:\delete\selenium\2.html", FileMode.Create, FileAccess.ReadWrite)) //{ // using (BinaryWriter writer = new BinaryWriter(stream)) // { // byte[] bytes = Encoding.UTF8.GetBytes(driver.PageSource); // stream.Write(bytes, 0, bytes.Length); // } //} // locate the tracking history table var trackingHistory = driver.FindElement(By.CssSelector("#historyDiv table#history tbody")); string result = trackingHistory.Text; var rows = trackingHistory.FindElements(By.TagName("tr")).ToList(); string locationPath = "//td[@class='location']"; //var locations = driverWait.Until(drv => drv.FindElements(By.XPath("//td[@class='location']"))); //driverWait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//td[@class='location']"))); var locations = driver.FindElements(By.XPath(locationPath)); foreach (var location in locations) { string a = location.Text; } foreach (var row in rows) { var t = row.FindElements(By.TagName("td")); string location = row.FindElements(By.ClassName("location")).FirstOrDefault().Text; string event_name = row.FindElements(By.TagName("td"))[3].Text; } // quit the driver driver.Quit(); }
/// <summary> /// Our objective from here is to get the json data in the source and save it. We'll pull it apart later. /// </summary> /// <param name="args"></param> static void Main(string[] args) { try { Console.WriteLine("Hit enter to start the magic....."); Console.ReadLine(); string uid = "*****@*****.**", pwd = "leblanc2016"; // PhantomJSOptions options = new PhantomJSOptions(); // driver.Manage().Timeouts().ImplicitWait = implicitWait; driver.Manage().Timeouts().PageLoad = pageLoadWait; //I can't really say what this might do but f**k it, why not? driver.Manage().Window.Size = new System.Drawing.Size(1920, 1080); driver.Navigate().GoToUrl("http://www.loopnet.com/xNet/MainSite/User/customlogin.aspx?LinkCode=31824"); //var bigAssTextBox = driver.FindElementByName("geography"); //Console.WriteLine("This element has this for a class value: " + bigAssTextBox.GetAttribute("class")); //login driver.FindElement(By.Name("ctlLogin$LogonEmail")).SendKeys(uid); driver.FindElement(By.Name("ctlLogin$LogonPassword")).SendKeys(pwd); driver.FindElement(By.Id("ctlLogin_btnLogon")).Click(); //Go to the searches page // driver.Navigate().GoToUrl("http://www.loopnet.com/xNet/MainSite/Listing/SavedSearches/MySavedSearches_FSFL.aspx?LinkCode=29400"); // //Get the search names first, then get their urls // var submarketNamesCollection = driver.FindElement(By.ClassName("savedSearchContainer")).FindElements(By.XPath("./tbody/tr/td[2]")); var searchLinkElements = driver.FindElementsByXPath("//*[@id='form1']/div[5]/div/div/table/tbody/tr/td[1]/div/a[1]"); //Spin up a collection to hold our data from here on out // List <BaseSearch> recoveredSearches = new List <BaseSearch>(); if (submarketNamesCollection.Count != searchLinkElements.Count) { throw new Exception($"Submarket/Search names count: {submarketNamesCollection.Count}. Doesn't equal recovered link elements count: {searchLinkElements.Count}"); } for (int i = 0; i < submarketNamesCollection.Count; i++) { recoveredSearches.Add(new BaseSearch() { Name = submarketNamesCollection[i].Text, BaseResultsURL = searchLinkElements[i].GetAttribute("href") }); } //Iterate through the results and do your thing for (int searchIndex = 0; searchIndex < recoveredSearches.Count; searchIndex++) { var currentSearch = recoveredSearches[searchIndex]; driver.Navigate().GoToUrl(currentSearch.BaseResultsURL); //Property name is in the title attribute of these link elements var propertyNamesList = driver.FindElements(By.XPath("//*[@id='placardSec']//h5[@class = 'listing-address']/a")).Select(x => x.GetAttribute("title")).ToList <string>(); //Let's get the building class since they need that. May also need broker info. var possibleBldgClasses = driver.FindElements(By.XPath("//*[@id='placardSec']/div[2]/div/article/div[1]/section[2]/div[1]/ul/li[3]/i")).Select(x => x.Text.Trim()).ToList <string>(); //Make sure the classes list and names list are 1 to 1 if (propertyNamesList.Count != possibleBldgClasses.Count) { throw new Exception($"The property names list count: {propertyNamesList.Count} does not match the Bldg Class candidate list count: {possibleBldgClasses.Count}"); } for (int tempIndex = 0; tempIndex < propertyNamesList.Count; tempIndex++) { currentSearch.Listings.Add(new Listing() { PropertyName = propertyNamesList[tempIndex], BldgClass = char.IsLetter(possibleBldgClasses[tempIndex][0]) ? possibleBldgClasses[tempIndex] : "N/A" }); } //Broker info. Deal with that later. //Click the create reports button // driver.FindElement(By.XPath("/html/body/section/main/section/div/section[1]//div[@class='toolbar-right']/div/button")).Click(); //Select all reports // bool firstTry = true; bool lastPage = false; while (!lastPage) { //We're already on the page for the first group we need to select, so we don't go to the next one on the first go around // if (!firstTry) { //firstTry = false; FlipDriverTimeout(true); var nextPageLinkContainer = driver.FindElements(By.CssSelector("a.caret-right-large")); FlipDriverTimeout(false); if (nextPageLinkContainer?.Count > 0) { nextPageLinkContainer[0].Click(); } else { lastPage = true; } } firstTry = false; //Select all the elements then circle around to the next page and repeat. // //driver.GetScreenshot(); var selectAllButton = driver.FindElement(By.XPath("//button[text()='Select all']")); ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", selectAllButton); //OpenQA.Selenium.Interactions.Actions actions = new OpenQA.Selenium.Interactions.Actions(driver); //actions.MoveToElement(selectAllButton); //actions.Perform(); // //selectAllButton.Click(); } //Onward to our report. Click the big red generate reports button. driver.FindElement(By.XPath("//button[text()='Generate Reports']")).Click(); // //Select listing summary report radio button driver.FindElement(By.Id("listingSummary")).Click(); // driver.FindElement(By.Id("btnCreateReport1")).Click(); // driver.SwitchTo().Frame("reportFrame"); //Get that dirty JSON string source = driver.PageSource; source = source.Substring(source.IndexOf("\"Data\":{\"Report\":")); source = source.Substring(0, source.IndexOf("Config={")).Trim(); //If this is indeed valid JSON, save it. currentSearch.rawJSON = source; // if (Directory.Exists(jsonOutputDirectory) == false) { Directory.CreateDirectory(jsonOutputDirectory); } // File.WriteAllText(jsonOutputDirectory + "//SearchData_" + searchIndex, currentSearch.rawJSON); } } catch (Exception ex) { Console.WriteLine("Explosion: " + ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine); } finally { driver.Close(); Console.WriteLine("Tear down complete, strike [ENTER] to exit."); } }
void proxyRun(Profile profile, C_Proxy proxy, int i, DataGridViewRowCollection rows) { var driverService = PhantomJSDriverService.CreateDefaultService(); driverService.HideCommandPromptWindow = true; if (proxy.auth) { driverService.ProxyAuthentication = String.Format("{0}:{1}", proxy.username, proxy.password); } driverService.Proxy = proxy.address; //driverService.ProxyType = "http"; rows[i].Cells[7].Value = "Setting up..."; IWebDriver _driver; _driver = new PhantomJSDriver(driverService); _driver.Navigate().GoToUrl(profile.SplashUrl); if (ElementDisplayed(_driver, By.CssSelector(".message.message-1.hidden"), 60)) { rows[i].Cells[7].Value = "On splash page..."; while (_driver.FindElements(By.Id("captcha")).Count <= 0) { System.Threading.Thread.Sleep(1000); } rows[i].Cells[7].Value = "Splash page passed!"; rows[i].Cells[7].Style = new DataGridViewCellStyle { ForeColor = System.Drawing.Color.Green }; string cookie_name = _driver.Manage().Cookies.AllCookies.FirstOrDefault(s => s.Value.Contains("hmac")).Name; proxy.hmac = _driver.Manage().Cookies.AllCookies.FirstOrDefault(s => s.Value.Contains("hmac")).Value; proxy.hmac_expiration = _driver.Manage().Cookies.AllCookies.FirstOrDefault(s => s.Value.Contains("hmac")).Expiry; rows[i].Cells[3].Value = proxy.hmac; proxy.sitekey = _driver.FindElement(By.Id("captcha")).GetAttribute("data-sitekey"); rows[i].Cells[4].Value = proxy.sitekey; proxy.clientid = _driver.FindElement(By.Id("flashproductform")).GetAttribute("action").Split(new string[] { "clientId=" }, StringSplitOptions.None)[1]; rows[i].Cells[5].Value = proxy.clientid; proxy.duplicate = getDuplicate(_driver.PageSource, _driver.FindElement(By.XPath("//link[@rel='canonical']")).GetAttribute("href")); rows[i].Cells[6].Value = proxy.duplicate; rows[i].Cells[7].Value = "HMAC and Sitekey retrieved!"; foreach (OpenQA.Selenium.Cookie cookie in _driver.Manage().Cookies.AllCookies) { if (cookie.Domain.Contains("adidas")) { proxy.cookies.Add(new C_Cookie { name = cookie.Name, value = cookie.Value, domain = cookie.Domain, expiry = cookie.Expiry }); } } passedSplash.Add(proxy); if (proxy.auth) { File.AppendAllText("logs.txt", String.Format("Proxy --- Address : {0} --- Username: {1} --- Password: {2} / Cookie --- Name: {3} --- Value : {4} / Sitekey: {5} / Client ID : {6} / Duplicate : {7}", proxy.address, proxy.username, proxy.password, cookie_name, proxy.hmac, proxy.sitekey, proxy.clientid, proxy.duplicate) + Environment.NewLine); } else { File.AppendAllText("logs.txt", String.Format("Proxy --- Address : {0} / Cookie --- Name: {1} --- Value : {2} / Sitekey: {3} / Client ID : {4} / Duplicate : {5}", proxy.address, cookie_name, proxy.hmac, proxy.sitekey, proxy.clientid, proxy.duplicate) + Environment.NewLine); } File.WriteAllText(String.Format("{0}\\{1}_productpage_source.txt", AppDomain.CurrentDomain.BaseDirectory, profile.ProductID), _driver.PageSource); _driver.Quit(); } else { rows[i].Cells[7].Value = "Error!"; rows[i].Cells[7].Style = new DataGridViewCellStyle { ForeColor = System.Drawing.Color.Red }; _driver.Quit(); } }
public void ChangePassword(Gmail gmail) { try { string changePassUrl = "https://myaccount.google.com/security/signinoptions/password"; webDriver.Navigate().GoToUrl(changePassUrl); try { var passInput = GetElement(webDriver, By.Id("Passwd"), 2); passInput.Clear(); passInput.SendKeys(gmail.OldPass); Thread.Sleep(500); var signInBtn = GetElement(webDriver, By.Id("signIn"), 1); signInBtn.Click(); Thread.Sleep(1000); } catch (Exception e) { logger.InfoFormat("{0}, stacktrace: {1}", e.Message, e.StackTrace); } var passInputs = webDriver.FindElements(By.XPath("//input[@type='password']")); foreach (var passInput in passInputs) { passInput.Clear(); passInput.SendKeys(gmail.NewPass); Thread.Sleep(900); } //var divRole = webDriver.FindElement(By.XPath("//div[@role='button']")); //var spanBtn = divRole.FindElement(By.XPath(".//span")); var spanBtn = webDriver.FindElement(By.XPath("//div[@role='main']/div/div/div/div/div/content/span")); spanBtn.Click(); Thread.Sleep(1500); //var divPass = webDriver.FindElement(By.XPath("//div[contains(text(), 'New password')]")); //var parent = divPass.FindElement(By.XPath("..")); //var pass1Input = parent.FindElement(By.XPath(".//input")); //pass1Input.Clear(); //pass1Input.SendKeys(gmail.NewPass); //Thread.Sleep(900); //var divPass2 = webDriver.FindElement(By.XPath("//div[contains(text(), 'Confirm new password')]")); //var parent2 = divPass2.FindElement(By.XPath("..")); //var pass2Input = parent2.FindElement(By.XPath(".//input")); //pass2Input.Clear(); //pass2Input.SendKeys(gmail.NewPass); //Thread.Sleep(900); //var changeBtn = webDriver.FindElement(By.XPath("//span[contains(text(), 'Change password')]")); //changeBtn.Click(); //Thread.Sleep(600); } catch (Exception ex) { logger.ErrorFormat("ID: " + gmail.ID + ", {0}, stacktrace: {1}", ex.Message, ex.StackTrace); File.AppendAllLines(Directory.GetCurrentDirectory() + "\\error_accounts.txt", new string[] { gmail.ID }); } }
public List <MyPlaylist> GetMyPlaylist() { List <MyPlaylist> myplaylists = new List <MyPlaylist>(); MyPlaylist playlist1 = new MyPlaylist(); var service = PhantomJSDriverService.CreateDefaultService(); service.HideCommandPromptWindow = true; IWebDriver driver = new PhantomJSDriver(service); driver.Url = "http://www.playzer.fr/customer/login"; IJavaScriptExecutor js = (IJavaScriptExecutor)driver; driver.FindElement(By.Id("customer_login_login")).SendKeys(Email); driver.FindElement(By.Id("customer_login_password")).SendKeys(Pass); IWebElement btn = driver.FindElements(By.XPath(".//button[@onclick]"))[1]; js.ExecuteScript("arguments[0].click();", btn); // driver.Manage().Cookies.AddCookie(GetCookies()); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); IWebElement nav_menu = driver.FindElement(By.Id("nav_menu")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", nav_menu); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='nav_menu']/ul"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='nav_menu']/ul/div[1]"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='nav_menu']/ul/div[1]/div[2]"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.Id("menu_myplaylists"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); IReadOnlyCollection <IWebElement> all_playlist = driver.FindElements(By.XPath("//div[@class='content home_playlist transition']")); Thread.Sleep(TimeSpan.FromSeconds(2)); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); int i = 1; foreach (IWebElement playlist in all_playlist) { string id = playlist.GetAttribute("id"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IWebElement playlist_option_btn = driver.FindElement(By.XPath("//*[@id='" + id + "_options" + "']")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); js.ExecuteScript("arguments[0].click();", playlist_option_btn); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IWebElement edit_btn = driver.FindElement(By.XPath("//div[@class='edit transition']")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); js.ExecuteScript("arguments[0].click();", edit_btn); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IWebElement song_items = driver.FindElement(By.XPath("//ul[@id='playlist_items']")); //Thread.Sleep(TimeSpan.FromSeconds(2)); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); IReadOnlyCollection <IWebElement> songs = song_items.FindElements(By.ClassName("content")); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); playlist1 = new MyPlaylist(); playlist1.Title = driver.FindElement(By.XPath("//*[@id='playlist_edit_name']")).GetAttribute("value"); playlist1.SelectedId = i; foreach (IWebElement song in songs) { driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); string id_song = song.GetAttribute("id"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); string title = driver.FindElement(By.XPath("//*[@id='" + id_song + "']/div[4]")).Text; driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); string artist = driver.FindElement(By.XPath("//*[@id='" + id_song + "']/div[5]")).Text; driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); string url = driver.FindElement(By.XPath("//*[@id='" + id_song + "']/div[3]/img")).GetAttribute("src"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); Song track = new Song(title, artist, id_song, url, i); playlist1.Songs.Add(track); playlist1.NumOfSongs = songs.Count; playlist1.Url = url; } driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); myplaylists.Add(playlist1); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.Id("close_modify"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='playlist_options']/div[1]/img"))); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); i++; } driver.Close(); driver.Dispose(); driver.Quit(); PlaylistDetailsWindow.all_playlists = myplaylists; myPlaylist = myplaylists; return(myplaylists); }