- Details
- Written by: Stanko Milosev
- Category: Code snippets
- Hits: 6170
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: 6361
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.
- Details
- Written by: Stanko Milosev
- Category: Code snippets
- Hits: 6605
OCR - optical character recognition, with MODI - microsoft office document imaging.
Microsoft has developed tool for OCR, which we can use it as a COM object.
First you need to install MODI on your computer, then, you can use it like this:
Document md = new Document();
String ocrText = String.Empty;
md.Create(openFileDialog1.FileName);
const bool ocrOrientImage = false;
const bool ocrStraightenImage = false;
md.OCR(MiLANGUAGES.miLANG_ENGLISH, ocrOrientImage, ocrStraightenImage);
var image = (MODI.Image)md.Images[0];
var layout = image.Layout;
foreach (Word word in layout.Words)
{
if (ocrText.Length > 0)
{
ocrText += " ";
}
ocrText += word.Text;
}
textBox1.Text = ocrText;
Only problem is if you want to really release the object md, then you ave to use SaveAs method something like:
string path = Path.GetDirectoryName(openFileDialog1.FileName); md.SaveAs(path + "\\deleteMe.tif", MODI.MiFILE_FORMAT.miFILE_FORMAT_DEFAULTVALUE,
MODI.MiCOMP_LEVEL.miCOMP_LEVEL_MEDIUM);
Taken from here, and from this source code.
My source you can download from here, and exe file can be found here.
- Details
- Written by: Stanko Milosev
- Category: Code snippets
- Hits: 5276
Open new form in "modal" style:
Form2 frmTest = new Form2(); frmTest.ShowDialog();
To get path from file name:
using System.IO; ... string path = Path.GetDirectoryName(openFileDialog1.FileName);