diff --git a/SeleniumStudy.Test/BrowserDriver/ChromeDriver/chromedriver-win64.zip b/SeleniumStudy.Test/BrowserDriver/ChromeDriver/chromedriver-win64.zip new file mode 100644 index 0000000..0b2f2c3 Binary files /dev/null and b/SeleniumStudy.Test/BrowserDriver/ChromeDriver/chromedriver-win64.zip differ diff --git a/SeleniumStudy.Test/BrowserDriver/ChromeDriver/chromedriver_win32.zip b/SeleniumStudy.Test/BrowserDriver/ChromeDriver/chromedriver_win32.zip new file mode 100644 index 0000000..d337e0b Binary files /dev/null and b/SeleniumStudy.Test/BrowserDriver/ChromeDriver/chromedriver_win32.zip differ diff --git a/SeleniumStudy.Test/BrowserDriver/EdgeDriver/edgedriver_win32.zip b/SeleniumStudy.Test/BrowserDriver/EdgeDriver/edgedriver_win32.zip new file mode 100644 index 0000000..f78d93f Binary files /dev/null and b/SeleniumStudy.Test/BrowserDriver/EdgeDriver/edgedriver_win32.zip differ diff --git a/SeleniumStudy.Test/BrowserDriver/EdgeDriver/edgedriver_win64.zip b/SeleniumStudy.Test/BrowserDriver/EdgeDriver/edgedriver_win64.zip new file mode 100644 index 0000000..02f986f Binary files /dev/null and b/SeleniumStudy.Test/BrowserDriver/EdgeDriver/edgedriver_win64.zip differ diff --git a/SeleniumStudy.Test/BrowserDriver/GeckoDriver/geckodriver-v0.34.0-win32.zip b/SeleniumStudy.Test/BrowserDriver/GeckoDriver/geckodriver-v0.34.0-win32.zip new file mode 100644 index 0000000..a7dda42 Binary files /dev/null and b/SeleniumStudy.Test/BrowserDriver/GeckoDriver/geckodriver-v0.34.0-win32.zip differ diff --git a/SeleniumStudy.Test/BrowserDriver/GeckoDriver/geckodriver-v0.34.0-win64.zip b/SeleniumStudy.Test/BrowserDriver/GeckoDriver/geckodriver-v0.34.0-win64.zip new file mode 100644 index 0000000..3b45d34 Binary files /dev/null and b/SeleniumStudy.Test/BrowserDriver/GeckoDriver/geckodriver-v0.34.0-win64.zip differ diff --git a/SeleniumStudy.Test/DriverTest.cs b/SeleniumStudy.Test/DriverTest.cs new file mode 100644 index 0000000..48af2ed --- /dev/null +++ b/SeleniumStudy.Test/DriverTest.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using OpenQA.Selenium; +using OpenQA.Selenium.DevTools; +using OpenQA.Selenium.Support; +using OpenQA.Selenium.Internal; +using OpenQA.Selenium.Interactions; +using OpenQA.Selenium.Remote; + + +using OpenQA.Selenium.Edge; +using OpenQA.Selenium.Firefox; +using OpenQA.Selenium.Chrome; +using OpenQA.Selenium.Chromium; +using OpenQA.Selenium.IE; +using OpenQA.Selenium.Safari; + + +[assembly:CollectionBehavior(MaxParallelThreads = 16)] + +namespace SeleniumStudy.Test +{ + public class DriverTest + { + [Fact] + public async Task Edge_Test() + { + WebDriver driver = new EdgeDriver("./BrowserDriver/EdgeDriver"); + + // Navigate to Bing + driver.Url = "https://cn.bing.com/"; + + // Find the search box and query for webdriver + var element = driver.FindElement(By.Id("sb_form_q")); + + element.SendKeys("webdriver"); + element.SendKeys(Keys.Enter); + + await Task.Delay(1000); + + driver.Quit(); + } + + [Fact] + public async Task Firefox_Test() + { + //FirefoxDriver driver = new FirefoxDriver(); + WebDriver driver = new FirefoxDriver("./BrowserDriver/GeckoDriver"); + + // Navigate to Bing + driver.Url = "https://cn.bing.com/"; + + // Find the search box and query for webdriver + var element = driver.FindElement(By.Id("sb_form_q")); + + element.SendKeys("webdriver"); + element.SendKeys(Keys.Enter); + + await Task.Delay(1000); + + driver.Quit(); + } + + [Fact] + public async Task Chrome_Test() + { + //WebDriver driver = new ChromeDriver(); + ChromeDriver driver = new ChromeDriver("./BrowserDriver/ChromeDriver"); + + // Navigate to Bing + driver.Url = "https://cn.bing.com/"; + + // Find the search box and query for webdriver + var element = driver.FindElement(By.Id("sb_form_q")); + + element.SendKeys("webdriver"); + element.SendKeys(Keys.Enter); + + await Task.Delay(1000); + + driver.Quit(); + } + } +} + diff --git a/SeleniumStudy.Test/GlobalUsings.cs b/SeleniumStudy.Test/GlobalUsings.cs new file mode 100644 index 0000000..8c927eb --- /dev/null +++ b/SeleniumStudy.Test/GlobalUsings.cs @@ -0,0 +1 @@ +global using Xunit; \ No newline at end of file diff --git a/SeleniumStudy.Test/SeleniumStudy.Test.csproj b/SeleniumStudy.Test/SeleniumStudy.Test.csproj new file mode 100644 index 0000000..9b0d32b --- /dev/null +++ b/SeleniumStudy.Test/SeleniumStudy.Test.csproj @@ -0,0 +1,64 @@ + + + + net8.0 + enable + enable + + false + true + AnyCPU;x86;x64 + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + PreserveNewest + + + PreserveNewest + + + Never + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + + + + + diff --git a/SeleniumStudy.sln b/SeleniumStudy.sln new file mode 100644 index 0000000..c73a575 --- /dev/null +++ b/SeleniumStudy.sln @@ -0,0 +1,42 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34518.117 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SeleniumStudy.Test", "SeleniumStudy.Test\SeleniumStudy.Test.csproj", "{28241E3F-9CCC-4F4A-AED9-F88175310FE3}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{9F78E99A-3BD8-4D26-866F-C927E65EEC01}" + ProjectSection(SolutionItems) = preProject + docs\WebDriver下载.md = docs\WebDriver下载.md + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Debug|x64.ActiveCfg = Debug|x64 + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Debug|x64.Build.0 = Debug|x64 + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Debug|x86.ActiveCfg = Debug|Any CPU + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Debug|x86.Build.0 = Debug|Any CPU + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Release|Any CPU.Build.0 = Release|Any CPU + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Release|x64.ActiveCfg = Release|x64 + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Release|x64.Build.0 = Release|x64 + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Release|x86.ActiveCfg = Release|x86 + {28241E3F-9CCC-4F4A-AED9-F88175310FE3}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A5968503-4051-4BF5-9206-05A87738B08B} + EndGlobalSection +EndGlobal diff --git a/docs/WebDriver下载.md b/docs/WebDriver下载.md new file mode 100644 index 0000000..88f6af4 --- /dev/null +++ b/docs/WebDriver下载.md @@ -0,0 +1,32 @@ +# Selenium+WebDriver 各浏览器驱动下载与使用 + +原理:.Net程序 --> Selenium类库 --> 各浏览器WebDriver(独立可执行exe程序) --> 本机安装的各浏览器(安装程序),注意:WebDriver与本机安装的浏览器版本要保持一致。 + ++ Firefox(火狐)浏览器驱动 + + [下载地址](https://github.com/mozilla/geckodriver/releases/) + ++ Chrome(google)浏览器驱动 + + [下载地址](http://chromedriver.storage.googleapis.com/index.html) + ++ IE浏览器驱动 + + [下载地址](http://selenium-release.storage.googleapis.com/index.html) + ++ Microsoft Edge (EdgeHTML)浏览器驱动 + + [下载地址](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) + ++ Microsoft Edge (Chromium)浏览器驱动 + + [下载地址](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) + ++ Opera浏览器驱动 + 可惜的是Selenium4开始,官方不在默认支持Opera, .NET环境下已无类库:Opera官方出的示例只有Python版。Opera可以用Chrome代替,基本一致。 + + [下载地址](https://github.com/operasoftware/operachromiumdriver/releases) + ++ Safari 浏览器驱动 + + 该浏览器不用下载驱动,可以直接执行代码 \ No newline at end of file