public void Get_UsingMultipleValuesOfClassAttributeWithContainsOperatorOfHtmlSpan_ReturnsTheSpecificElementWithAllSpecifiedClassValues() { // Arrange using (TempFile tempFile = new TempFile( @"<html> <head> <title>test</title> </head> <body> <span name=""span1"" class=""class1"" /> <span name=""span2"" class=""class1 class4"" /> <span name=""span3"" class=""class1 class2 class3"" /> </body> </html>")) { BrowserWindow.Launch(tempFile.FilePath); var window = new BrowserWindowUnderTest("test"); HtmlSpan span3 = window.Find <HtmlSpan>(By .Class("class1", PropertyExpressionOperator.Contains) .AndClass("class2", PropertyExpressionOperator.Contains)); // Act and Assert Assert.AreEqual("span3", span3.SourceControl.Name); window.Close(); } }
public void GetHtmlDiv_ByClass_Succeeds() { // Arrange using (var webPage = new TempWebPage( @"<html> <head> <title>test</title> </head> <body> <div class=""button""><a href=""/main"">main text</a></div> <div class=""button""><a href=""/about"">about text</a></div> </body> </html>")) { var browserWindow = BrowserWindow.Launch(webPage.FilePath); // Act HtmlDiv div = browserWindow.Find <HtmlDiv>(By.Class("button")); HtmlHyperlink about = browserWindow.Find <HtmlHyperlink>(By.SearchProperties("InnerText=about text;href~about")); HtmlDiv div2 = about.Parent as HtmlDiv; // Assert Assert.IsTrue(div.Exists); Assert.AreEqual("main text", div.SourceControl.InnerText); Assert.IsTrue(about.Exists); Assert.IsTrue(div2.Exists); Assert.AreEqual("about text", div2.SourceControl.InnerText); browserWindow.Close(); } }
public async Task <bool> ScrapeUrl(string url) { try { var browser = new ScrapingBrowser(); var webpage = await browser.NavigateToPageAsync(new Uri(url)); var article = webpage.Find("div", By.Class("article-text")).FirstOrDefault(); //var articleMetaData = article.ChildNodes.Where(x => x.Name == "p"); var articleBodyNode = article.ChildNodes.FirstOrDefault(x => x.GetAttributeValue("itemprop", "") != "" && x.Name == "div"); if (articleBodyNode != null) { var articleNodes = articleBodyNode.ChildNodes.Where(x => x.Name == "p"); var articleContent = new StringBuilder(); foreach (var articleNode in articleNodes) { articleContent.AppendLine(articleNode.InnerText); } var fullArticle = articleContent.ToString().ToLower(); return(fullArticle.Contains("hitler")); } else { _logger.Information($"Could not extract article text for article: {url}!"); return(false); } } catch (Exception e) { _logger.Error($"Error scraping article {url} : {e.Message}"); return(false); } }
public void Class() { // Act By configuration = By.Class("SomeClass"); // Assert Assert.AreEqual(1, configuration.Configuration.Count); }
public void Class() { // Act By configuration = By.Class("SomeClass"); // Assert Assert.AreEqual(1, configuration.Configuration.Count); Assert.AreEqual(PropertyExpressionOperator.EqualTo, configuration.Configuration.First().PropertyOperator); }
public async Task <IEnumerable <Subject> > GetClassScheduleAsync(Login login) { var mainPage = await _loginService.LoginAsync(login); if (mainPage.Content.Contains(login.Matricula)) { var schedulerClassPage = await _schedulerService.GetClassSchedulerAsync(mainPage); var scheduleTable = schedulerClassPage.Find("tbody", By.Class("tabela-horario")).FirstOrDefault(); var tableRows = scheduleTable.SelectNodes("//tr"); var tableLines = tableRows.Select((n, i) => n.SelectNodes($"//td[{i + 1}]")); var classes = tableLines .Where(c => !Regex.IsMatch(c.First().InnerText.Trim(), @"\d{2}:\d{2}")) .Select(c => c.Select(n => new Subject { Title = n.InnerText.Trim() })); var hours = tableLines .FirstOrDefault(c => Regex.IsMatch(c.First().InnerText.Trim(), @"\d{2}:\d{2}")) .Select(n => n.InnerText.Trim()); return(classes .SelectMany(c => c.Select((s, i) => { var startHour = hours.ElementAt(i).Split('-').FirstOrDefault().Trim(); var finishHour = hours.ElementAt(i).Split('-').LastOrDefault().Trim(); var clas = Regex.Match(s.Title, @"\([\w\d-]+\)").Value; s.ClassHour = new ClassHour { StartHour = startHour, FinishHour = finishHour }; s.Classroom = s.Title.Split(clas).LastOrDefault().Trim(); s.Title = s.Title.Split(clas).FirstOrDefault().Trim(); return s; }) )); } return(Enumerable.Empty <Subject>()); }
private string GetNugetEnterPackageLink() { var tag = "a"; var tagClass = "package-title"; var links = page.Find(tag, By.Class(tagClass)); if (links.Any()) { return(links .Select(node => ClearLinkText(node.Attributes["href"].Value)) .FirstOrDefault()); } else { throw new NodeNotFoundException($"Não foi possível encontrar a tag {tag}"); } }
private async Task <List <OfferThread> > GetWebsiteContentAsync() { var browser = new ScrapingBrowser(); var monsterQueryPage = await browser.NavigateToPageAsync( new Uri("https://www.pepper.pl/search?q=Monster%2BEnergy")); var selectedNodes = monsterQueryPage.Find("article", By.Class("thread")).ToList(); var offerThreads = new List <OfferThread>(); foreach (var selectedNode in selectedNodes) { if (selectedNode.InnerHtml.Contains("Zakończono")) // Improve condition { continue; } offerThreads.Add(FillModelData(selectedNode)); } return(offerThreads); }
public IDictionary <string, string> ExpandSideBarMenu(WebPage page) { var sideBarMenu = page.Find(HtmlTags.Div.GetDescription(), By.Class(SIDE_BAR_MENU_CLASS)).FirstOrDefault(); if (sideBarMenu is null) { return(ImmutableDictionary <string, string> .Empty); } var nodesMenu = sideBarMenu.OwnerDocument.DocumentNode.SelectNodes("//ul //a"); var dic = new Dictionary <string, string>(); foreach (var node in nodesMenu) { var title = node.InnerText; var link = node.Attributes.AttributesWithName(MENU_NODE_HREF_ATTRIBUTE).FirstOrDefault().Value; dic.TryAdd(title, link); } return(dic); }
private static void GetMovie() { var url = new Uri("https://www.imdb.com/title/tt0434665/?ref_=fn_al_tt_1"); var browser = new ScrapingBrowser(); var homePage = browser.NavigateToPage(url); var titleName = homePage.Html.CssSelect("div.title_wrapper h1").First().InnerText; Console.Write(titleName.Replace(" ", "").TrimEnd()); Console.Write(" "); var rating = homePage.Find("div", By.Class("ratingValue")).First(); foreach (var elem in rating.Descendants().ToList()) { if (elem.Name == "span" && elem.Attributes.Any(x => x.Name == "itemprop" && x.Value == "ratingValue")) { Console.Write(elem.InnerText); break; } } }
public void ShouldFindElementsByAny() { var elts = driver.FindElements(By.Any(By.Class("class"), By.Tag("a"))); A.AreEqual(3, elts.Count); }