C#通过网络浏览器自动登录gmail/hotmail
我正在尝试做一些类似LassPass的事情,但是作为一个桌面应用程序。我使用VS2013、C#和Windows窗体 我有gmail或outlook的用户电子邮件和密码,我想单击桌面程序中的一个按钮打开本地默认浏览器,即带有适当链接的Chrome/Firefox。我想自动登录服务(gmail/outlook)。我想问我是否必须使用适当的API,或者只有某种链接(“userlogin”,password=“userpassword”)才好 我看到一个gmail API,里面有如何发送邮件,但我找不到如何登录服务C#通过网络浏览器自动登录gmail/hotmail,c#,api,outlook,gmail,gmail-api,C#,Api,Outlook,Gmail,Gmail Api,我正在尝试做一些类似LassPass的事情,但是作为一个桌面应用程序。我使用VS2013、C#和Windows窗体 我有gmail或outlook的用户电子邮件和密码,我想单击桌面程序中的一个按钮打开本地默认浏览器,即带有适当链接的Chrome/Firefox。我想自动登录服务(gmail/outlook)。我想问我是否必须使用适当的API,或者只有某种链接(“userlogin”,password=“userpassword”)才好 我看到一个gmail API,里面有如何发送邮件,但我找不到
是否在Gmail或Outlook API函数中可以帮助我?对于Gmail,您可以使用以下代码进行身份验证
protected void Button1_Click(object sender, EventArgs e)
{
Imap client = new Imap();
// connect to server
client.Connect("imap.gmail.com", 993, SslMode.Implicit);
// authenticate
client.Login("username", "password");
}
你在找什么
一旦你有了它的设置,你可以做一些像
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;
class Test
{
static void Main(string[] args)
{
IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl("https://www.gmail.com/");
IWebElement query = driver.FindElement(By.Id("Email"));
query.SendKeys("my.email@gmail.com");
query = driver.FindElement(By.Id("next"));
query.Click();
// now you just have to do the same for the password page
driver.Quit();
}
}
您可能会发现以下链接很有用:
Passwd
),但仍然不走运。尝试按名称而不是id获取元素,但仍然存在相同的错误。是否有什么东西阻止selenium获取密码字段(出于安全原因)?找到了答案。对于将来出现此问题的任何人,都需要等待元素可见:driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10))代码>