C# 如何在我的程序中登录或登录网站?
我想让我的Winforms程序有一个按钮,按下该按钮时会执行以下操作:C# 如何在我的程序中登录或登录网站?,c#,.net,winforms,C#,.net,Winforms,我想让我的Winforms程序有一个按钮,按下该按钮时会执行以下操作: 打开浏览器 导航到网站 从文件或文本框中读取用户名和密码 登录网站,甚至从我的程序中获取信息并登录 例如,我想用Facebook或论坛这样的网站来实现这一点。 这可能吗?我该怎么做;这在技术上是可能的 对于制作WinForms应用程序,我认为这个网站不合适,因为它涉及的是具体的、狭义的问题 要打开web浏览器、导航到页面和登录,请查看浏览器自动化库。我之所以推荐它,是因为它适用于多种浏览器,而且似乎是最成熟的浏览器。可以使用
这可能吗?我该怎么做;这在技术上是可能的 对于制作WinForms应用程序,我认为这个网站不合适,因为它涉及的是具体的、狭义的问题 要打开web浏览器、导航到页面和登录,请查看浏览器自动化库。我之所以推荐它,是因为它适用于多种浏览器,而且似乎是最成熟的浏览器。可以使用将其添加到项目中 下面是使用Facebook执行此操作的一些示例代码:
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using System;
class Program
{
static void Main(string[] args)
{
var facebookDetails = new WebPageAuthenticationDetails
{
HomePageAddress = new Uri("https://www.facebook.com/"),
UsernameLocator = By.Id("email"),
PasswordLocator = By.Id("pass"),
SubmitLocator = By.XPath("//input[@value='Log in']"),
};
//Don't dispose this or the browser will be closed after logging in.
var browserDriver = new FirefoxDriver(); //Or use a different browser if you want (Firefox is easiest to use, though)
var pageAccessor = new WebPageAccessor(browserDriver, facebookDetails);
pageAccessor.LogIn("example_username", "example_password");
}
}
class WebPageAccessor
{
private readonly IWebDriver driver;
private readonly WebPageAuthenticationDetails pageDetails;
public WebPageAccessor(IWebDriver driver, WebPageAuthenticationDetails details)
{
this.driver = driver;
this.pageDetails = details;
}
public void LogIn(string username, string password)
{
driver.Navigate().GoToUrl(pageDetails.HomePageAddress);
if (pageDetails.LogInLinkLocator != null)
Click(pageDetails.LogInLinkLocator);
Type(pageDetails.UsernameLocator, username);
Type(pageDetails.PasswordLocator, password);
Click(pageDetails.SubmitLocator);
}
private void Click(By locator)
{
driver.FindElement(locator).Click();
}
private void Type(By fieldLocator, string text)
{
driver.FindElement(fieldLocator).SendKeys(text);
}
}
class WebPageAuthenticationDetails
{
public Uri HomePageAddress { get; set; }
/// <summary>
/// Only needed if a log-in link first needs to be clicked.
/// </summary>
public By LogInLinkLocator { get; set; }
public By UsernameLocator { get; set; }
public By PasswordLocator { get; set; }
public By SubmitLocator { get; set; } //Because some sites don't use HTML submit buttons to submit
}
使用OpenQA.Selenium;
使用OpenQA.Selenium.Firefox;
使用制度;
班级计划
{
静态void Main(字符串[]参数)
{
var facebookDetails=新WebPageAuthenticationDetails
{
HomePageAddress=新Uri(“https://www.facebook.com/"),
UsernameLocator=By.Id(“电子邮件”),
PasswordLocator=By.Id(“pass”),
SubmitLocator=By.XPath(//input[@value='Log-in']),
};
//请勿处理此项,否则浏览器将在登录后关闭。
var browserDriver=new FirefoxDriver();//如果需要,也可以使用其他浏览器(不过Firefox最容易使用)
var pageAccessor=新的WebPageAccessor(browserDriver,facebookDetails);
pageAccessor.LogIn(“示例_用户名”、“示例_密码”);
}
}
类网页接受器
{
专用只读IWebDriver;
私有只读WebgeAuthenticationDetails页面详细信息;
公共WebgeAccessor(IWebDriver驱动程序,WebgeAuthenticationDetails)
{
this.driver=driver;
this.pageDetails=详细信息;
}
公共无效登录(字符串用户名、字符串密码)
{
driver.Navigate().gotour(pageDetails.HomePageAddress);
if(pageDetails.LogInLinkLocator!=null)
单击(pageDetails.LogInLinkLocator);
类型(pageDetails.UsernameLocator,用户名);
类型(pageDetails.PasswordLocator,密码);
单击(pageDetails.SubmitLocator);
}
专用空心单击(按定位器)
{
driver.FindElement(locator).Click();
}
专用空心类型(按字段定位器、字符串文本)
{
驱动程序.FindElement(字段定位器).SendKeys(文本);
}
}
类WebPageAuthenticationDetails
{
公共Uri主页地址{get;set;}
///
///仅当需要首先单击登录链接时才需要。
///
由LogInLinkLocator{get;set;}公开
public By UsernameLocator{get;set;}
通过密码定位器公开{get;set;}
public By SubmitLocator{get;set;}//因为某些站点不使用HTML提交按钮进行提交
}
选择浏览器自动化库可能很困难。如果你不知道该用哪一个,只需在谷歌上搜索一下;以前已经讨论过了。是的;这在技术上是可能的 对于制作WinForms应用程序,我认为这个网站不合适,因为它涉及的是具体的、狭义的问题 要打开web浏览器、导航到页面和登录,请查看浏览器自动化库。我之所以推荐它,是因为它适用于多种浏览器,而且似乎是最成熟的浏览器。可以使用将其添加到项目中 下面是使用Facebook执行此操作的一些示例代码:
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using System;
class Program
{
static void Main(string[] args)
{
var facebookDetails = new WebPageAuthenticationDetails
{
HomePageAddress = new Uri("https://www.facebook.com/"),
UsernameLocator = By.Id("email"),
PasswordLocator = By.Id("pass"),
SubmitLocator = By.XPath("//input[@value='Log in']"),
};
//Don't dispose this or the browser will be closed after logging in.
var browserDriver = new FirefoxDriver(); //Or use a different browser if you want (Firefox is easiest to use, though)
var pageAccessor = new WebPageAccessor(browserDriver, facebookDetails);
pageAccessor.LogIn("example_username", "example_password");
}
}
class WebPageAccessor
{
private readonly IWebDriver driver;
private readonly WebPageAuthenticationDetails pageDetails;
public WebPageAccessor(IWebDriver driver, WebPageAuthenticationDetails details)
{
this.driver = driver;
this.pageDetails = details;
}
public void LogIn(string username, string password)
{
driver.Navigate().GoToUrl(pageDetails.HomePageAddress);
if (pageDetails.LogInLinkLocator != null)
Click(pageDetails.LogInLinkLocator);
Type(pageDetails.UsernameLocator, username);
Type(pageDetails.PasswordLocator, password);
Click(pageDetails.SubmitLocator);
}
private void Click(By locator)
{
driver.FindElement(locator).Click();
}
private void Type(By fieldLocator, string text)
{
driver.FindElement(fieldLocator).SendKeys(text);
}
}
class WebPageAuthenticationDetails
{
public Uri HomePageAddress { get; set; }
/// <summary>
/// Only needed if a log-in link first needs to be clicked.
/// </summary>
public By LogInLinkLocator { get; set; }
public By UsernameLocator { get; set; }
public By PasswordLocator { get; set; }
public By SubmitLocator { get; set; } //Because some sites don't use HTML submit buttons to submit
}
使用OpenQA.Selenium;
使用OpenQA.Selenium.Firefox;
使用制度;
班级计划
{
静态void Main(字符串[]参数)
{
var facebookDetails=新WebPageAuthenticationDetails
{
HomePageAddress=新Uri(“https://www.facebook.com/"),
UsernameLocator=By.Id(“电子邮件”),
PasswordLocator=By.Id(“pass”),
SubmitLocator=By.XPath(//input[@value='Log-in']),
};
//请勿处理此项,否则浏览器将在登录后关闭。
var browserDriver=new FirefoxDriver();//如果需要,也可以使用其他浏览器(不过Firefox最容易使用)
var pageAccessor=新的WebPageAccessor(browserDriver,facebookDetails);
pageAccessor.LogIn(“示例_用户名”、“示例_密码”);
}
}
类网页接受器
{
专用只读IWebDriver;
私有只读WebgeAuthenticationDetails页面详细信息;
公共WebgeAccessor(IWebDriver驱动程序,WebgeAuthenticationDetails)
{
this.driver=driver;
this.pageDetails=详细信息;
}
公共无效登录(字符串用户名、字符串密码)
{
driver.Navigate().gotour(pageDetails.HomePageAddress);
if(pageDetails.LogInLinkLocator!=null)
单击(pageDetails.LogInLinkLocator);
类型(pageDetails.UsernameLocator,用户名);
类型(pageDetails.PasswordLocator,密码);
单击(pageDetails.SubmitLocator);
}
专用空心单击(按定位器)
{
driver.FindElement(locator).Click();
}
专用空心类型(按字段定位器、字符串文本)
{
驱动程序.FindElement(字段定位器).SendKeys(文本);
}
}
类WebPageAuthenticationDetails
{
公共Uri主页地址{get;set;}
///
///仅当需要首先单击登录链接时才需要。
///
由LogInLinkLocator{get;set;}公开
public By UsernameLocator{get;set;}
通过密码定位器公开{get;set;}
public By SubmitLocator{get;set;}//因为某些站点不使用HTML提交按钮进行提交
}
选择浏览器自动化库可能很困难。如果你不知道该用哪一个,只需在谷歌上搜索一下;这是以前讨论过的。您是在寻找类似于1密码的东西吗?不知道为什么有人在下面