Skip to content

Instantly share code, notes, and snippets.

@mikeblakeuk
Created November 22, 2013 15:44
Show Gist options
  • Select an option

  • Save mikeblakeuk/7601961 to your computer and use it in GitHub Desktop.

Select an option

Save mikeblakeuk/7601961 to your computer and use it in GitHub Desktop.

Revisions

  1. mikeblakeuk created this gist Nov 22, 2013.
    38 changes: 38 additions & 0 deletions Results
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    looking for 'mikeblakeuk' at 'http://www.google.co.uk'
    About 22,600 results (0.16 seconds)
    10 cite elements on page 1
    Page 2 of about 22,600 results (0.10 seconds)
    10 cite elements on page 2
    Page 3 of about 22,600 results (0.11 seconds)
    10 cite elements on page 3
    Page 4 of about 22,600 results (0.12 seconds)
    10 cite elements on page 4
    Found 'www.zoominfo.com/p/Mike-Blake/2461152' element 3, Page 4
    Page 5 of 47 results (0.11 seconds)
    7 cite elements on page 5
    Last Page

    looking for 'blakeitsolutions blake' at 'http://www.google.co.uk'
    About 197 results (0.21 seconds)
    10 cite elements on page 1
    Found 'mikeblakeuk.wordpress.com/blakeitsolutions/' element 3, Page 1
    Page 2 of about 193 results (0.17 seconds)
    10 cite elements on page 2
    Page 3 of about 193 results (0.18 seconds)
    10 cite elements on page 3
    Page 4 of about 193 results (0.26 seconds)
    10 cite elements on page 4
    Page 5 of 42 results (0.18 seconds)
    2 cite elements on page 5
    Last Page

    looking for 'mikeblake uk blake it solutions' at 'http://www.google.co.uk'
    About 1,040,000 results (0.20 seconds)
    10 cite elements on page 1
    Found 'mikeblakeuk.wordpress.com/blakeitsolutions/' element 6, Page 1
    Page 2 of about 1,040,000 results (0.18 seconds)
    10 cite elements on page 2
    Found 'www.zoominfo.com/p/Mike-Blake/2461152' element 6, Page 2
    All targets found. Stopping

    (1min of processing)
    102 changes: 102 additions & 0 deletions SeoIsEasy
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,102 @@
    using System;
    using System.Threading;
    using NUnit.Framework;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Firefox;
    using OpenQA.Selenium.Remote;

    namespace SeleniumTests
    {
    [TestFixture]
    public class Test
    {
    private readonly RemoteWebDriver driver = new FirefoxDriver();

    [Test]
    public void Tests()
    {
    var targetUrls = new[]
    {
    "mikeblakeuk.wordpress.com/blakeitsolutions",
    "www.zoominfo.com"
    };

    var keywords = new[]
    {
    "mikeblakeuk",
    "blakeitsolutions blake",
    "mikeblake uk blake it solutions"
    };

    foreach (var keyword in keywords)
    {
    Test1(keyword, targetUrls);
    Console.WriteLine();
    }

    driver.Quit();
    }

    public void Test1(string keywords, string[] targetUrls)
    {
    var baseURL = "http://www.google.co.uk";
    driver.Navigate().GoToUrl(baseURL);
    Console.WriteLine("looking for '{0}' at '{1}'", keywords, baseURL);

    var foundCount = 0;
    for (int page = 0; page < 5; page++)
    {
    driver.Navigate().GoToUrl(baseURL + string.Format("/#q={0}&start={1}", keywords.Replace(' ', '+'), page * 10));
    WaitForElement(By.XPath("//div[@id='ires']"));

    var searchResultsElements = driver.FindElements(By.XPath("//div[@id='ires']//cite"));
    var stats = driver.FindElement(By.XPath("//div[@id='resultStats']"));
    Console.WriteLine(stats.Text);
    Console.WriteLine("{0} cite elements on page {1}", searchResultsElements.Count, page + 1);

    var i = 0;
    foreach (var webElement in searchResultsElements)
    {
    foreach (var targetUrl in targetUrls)
    {
    if (webElement.Text.Contains(targetUrl))
    {
    Console.WriteLine("Found '{2}' element {0}, Page {1}", (i + 1), page + 1, webElement.Text);
    foundCount++;
    }
    }
    if (foundCount == targetUrls.Length)
    {
    Console.WriteLine("All targets found. Stopping");
    return;
    }
    i++;
    }
    var nextButton = driver.FindElements(By.XPath("//span[text()='Next']"));
    if (nextButton.Count == 0)
    {
    Console.WriteLine("Last Page");
    return;
    }
    }
    }

    private void WaitForElement(By xPath)
    {
    for (int second = 0; ; second++)
    {
    if (second >= 50)
    Assert.Fail("timeout");
    try
    {
    if (driver.FindElements(xPath).Count > 0)
    return;
    }
    catch
    {
    }
    Thread.Sleep(100);
    }
    }
    }
    }