- Details
- Written by: Stanko Milosev
- Category: Code snippets
- Hits: 2076
string milosevCom = "http://www.milosev.com"; string doc = ""; using (System.Net.WebClient client = new System.Net.WebClient()) { doc = client.DownloadString(milosevCom); } Console.WriteLine(doc); Console.ReadKey();WebClient is from .NET 6 obsolete.
- Details
- Written by: Stanko Milosev
- Category: Code snippets
- Hits: 7953
Here I explained how to install MonoDevelop. As I already explained here, first download Selenium Client & WebDriver Language Bindings, in my case I downloaded this one. You will also need ChromeDriver (this time for linux), in my case I downloaded this one.
If you try to use chromedriver for windows you will receive errors like:
OpenQA.Selenium.WebDriverException: Unexpected error. System.Net.WebException: Error: ConnectFailure (Connection refused) ---> System.Net.Sockets.SocketException: Connection refused
at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x000f7] in <filename unknown>:0
at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x0019b] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult) [0x00043] in <filename unknown>:0
at System.Net.HttpWebRequest.GetRequestStream () [0x00057] in <filename unknown>:0
at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute (OpenQA.Selenium.Remote.Command commandToExecute)
and:
run-detectors: unable to find an interpreter for /home/stanko/Downloads/SeleniumTest/SeleniumTest/bin/Debug/chromedriver.exe
Also if you in terminal window write something like:
mono chromedriver.exe
Then you will receive error like:
Cannot open assembly 'chromedriver.exe': File does not contain a valid CIL image
That is why we need to use Linux version of chromedriver.
Download and install Chrome.
Open MonoDevelop, start new solution:
choose console project:
After creating project right click on references:
switch to .Net Assembly tab, and add selenium dll's which we downloaded previously.
Now open Program.cs, in using section write:
using OpenQA.Selenium; using OpenQA.Selenium.Chrome;
In main method write something like:
ChromeDriverService service = ChromeDriverService.CreateDefaultService(@"/home/myUserName/projects/SeleniumTest/lib/chromedriver_linux64", "chromedriver"); IWebDriver driver = new ChromeDriver(service); driver.Navigate ().GoToUrl ("http://www.milosev.com");
Notice line:
ChromeDriverService service = ChromeDriverService.CreateDefaultService(@"/home/myUserName/projects/SeleniumTest/lib/chromedriver_linux64", "chromedriver");
This line we need to tell selenium that we will use Linux chromedriver, otherwise Selenium will always try to load chromedriver.exe (Windows one).
Whole application should look like this:
using System; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; namespace SeleniumTest { class MainClass { public static void Main (string[] args) { ChromeDriverService service = ChromeDriverService.CreateDefaultService(@"/home/myUserName/projects/SeleniumTest/lib/chromedriver_linux64", "chromedriver"); IWebDriver driver = new ChromeDriver(service); driver.Navigate ().GoToUrl ("http://www.milosev.com"); } } }
Of course path "/home/myUserName/projects/SeleniumTest/lib/chromedriver_linux64" change to path where you downloaded your chromedriver.
Example download from here, and don't forget to use http in your URL's otherwise Selenium will not work.
- Details
- Written by: Stanko Milosev
- Category: Code snippets
- Hits: 5272
Selenium tests in java, I already explained here. Since I am not Java expert I need them to run also in .NET environment, idea is to create console application to parse few web pages, by automatizing Chrome. I am using this web site.
Download Selenium Client & WebDriver Language Bindings, in my case I downloaded this one. You will also need ChromeDriver, in my case I downloaded this one.
Start new project:
Choose console:
Add references to previously downloaded Selenium Client & WebDriver Language Bindings (in solution explorer right mouse button on References):
Browse:
In my case I decided to go on net40:
Add dll's:
In my case I decided to add also ChromeDriver to project, then I will not have explicitly to write path. Right click on the project and click add existing item:
Choose chrome driver:
Select chrome driver, choose properties:
In part Copy To Output Directory, choose Copy always. You can also choose copy if newer, but to avoid possible problems I decided to go like this:
Now I added following name spaces:
using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Support.UI;
Then in Main method add code like:
IWebDriver driver = new ChromeDriver(); driver.Navigate().GoToUrl("http://www.milosev.com");
In line:
IWebDriver driver = new ChromeDriver();
You can also write something like:
IWebDriver driver = new ChromeDriver(@"C:\Users\myUserName\Downloads\chromedriver_win32");
Then you wouldn't need to add chrome driver into the project...
So, this is all you need to start parsing pages with Selenium. Example project download from here.
- Details
- Written by: Stanko Milosev
- Category: Code snippets
- Hits: 5738
using System; using System.Data.SqlClient; using System.IO; using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Smo; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string[] filePaths = Directory.GetFiles(@"c:\myListOfScripts\", "*.sql"); Array.Sort(filePaths); string connectionString = "server=myServer\\myInstance;database=myDatabase;uid=sa;pwd=mySaPwd"; SqlConnection cn = new SqlConnection(connectionString); Console.WriteLine("Last how many scripts you want to execute?"); var lastNoScript = Convert.ToInt16(Console.ReadLine()); FileStream ostrm; StreamWriter writer; TextWriter oldOut = Console.Out; try { ostrm = new FileStream("./log.txt", FileMode.OpenOrCreate, FileAccess.Write); writer = new StreamWriter(ostrm); } catch (Exception e) { Console.WriteLine("Cannot open log.txt for writing"); Console.WriteLine(e.Message); return; } Console.SetOut(writer); cn.Open(); for (int i = filePaths.Length - lastNoScript; i < filePaths.Length; i++) { Console.WriteLine("Executing script: "); Console.WriteLine(filePaths[i]); Console.WriteLine(); FileInfo file = new FileInfo(@filePaths[i]); string script = file.OpenText().ReadToEnd(); ServerConnection svrConnection = new ServerConnection(cn); Server server = new Server(svrConnection); try { server.ConnectionContext.ExecuteNonQuery(script); } catch (Exception e) { Console.WriteLine(script + " : Message: " + e.Message + " Inner exception: " + e.InnerException.Message); } } Console.SetOut(oldOut); writer.Close(); ostrm.Close(); Console.WriteLine("Press any key..."); Console.ReadKey(true); } } }
For:
using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Smo;
you will need to add reference to files:
C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll
and
C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.Management.Sdk.Sfc.dll
C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.Smo.dll
Your app.config file must to look like:
<?xml version="1.0"?> <configuration> <!--<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>--> <startup useLegacyV2RuntimeActivationPolicy="true"> <requiredRuntime version='v4.0.20506' safemode='true'/> <supportedRuntime version='v4.0'/> </startup> </configuration>
To add app.config file do next:
1. On the Project menu, click Add New Item.
2. The Add New Item dialog box appears.
Select the Application Configuration File template and then click Add.
A file named app.config is added to your project.