我试图弄清楚如何以编程方式单击网页上的按钮.
具体来说,我有一个带WebBrowser控件的WinForm.一旦它导航到我正在尝试使用的目标ASP.NET登录页面,在DocumentCompleted事件处理程序中,我有以下编码:
HtmlDocument doc = webBrowser1.Document;
HtmlElement userID = doc.GetElementById("userIDTextBox");
userID.InnerText = "user1";
HtmlElement password = doc.GetElementById("userPasswordTextBox");
password.InnerText = "password";
HtmlElement button = doc.GetElementById("logonButton");
button.RaiseEvent("onclick");
Run Code Online (Sandbox Code Playgroud)
这样可以很好地填充用户标识和密码文本框,但是我没有成功获取该单击的按钮; 我也试过"点击","点击"和"onClick" - 还有什么?搜索msdn当然不会给我任何线索,也没有groups.google.com.我得亲近 或许不是 - 有人告诉我应该调用页面的POST方法,但是这样做是不是给出了建议的一部分.
BTW按钮编码:
<input type="submit" name="logonButton" value="Login" onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="logonButton" tabindex="4" />
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习如何使用MSBuild,以便我们可以使用它来构建我们的项目.文档中似乎有一个非常大的漏洞,我发现每个地方都有漏洞,漏洞是你如何命名或以其他方式指定MSBuild项目文件?
例如,可以从Microsoft下载的MSBuild教程详细介绍了构建文件的内容.例如,这里有一些他们的Hello World项目文件.
<Project MSBuildVersion = "1.0" DefaultTargets = "Compile">
<Property appname = "HelloWorldCS"/>
<Item Type = "CSFile" Include = "consolehwcs1.cs"/>
<Target Name = "Compile">
<Task Name = "CSC" Sources = "@(CSFile)">
<OutputItem TaskParameter = "OutputAssembly" Type = "EXEFile" Include = "$(appname).exe"/>
</Task>
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
它继续等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等.没用,完全没用.因为他们从来没有说过如何通过MSBuild应用程序识别这个xml文件.它应该以特定的方式命名吗?它应该放在特定的目录中吗?都?都不是?
它不仅仅是MS教程,也没有告诉它.我无法在MSDN上找到它,也无法在任何我可以从Groups.Google中删除的链接上找到它.
这里有人知道吗?我当然希望如此.
编辑添加: 我把教程中包含的.proj文件误认为是.csproj文件,这就是一个人提供给MSBuild的文件,但是在我看到它之前它已经得到了以下答案.它应该是相当明显的,但我错过了它.
假设我创建了一个带有属性的类:
public class User
{
private string _userID;
public string UserID
{
get { return _userID; }
set { _userID = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
我必须如何处理类和属性才能将方法附加到UserID属性,例如使用"dot"语法围绕用户ID生成Xml的方法:
User u = new User();
u.UserID = "Mike";
string xml = u.UserID.ToXml();
Run Code Online (Sandbox Code Playgroud)
我可以弄清楚如何编写一个方法来将Xml标记放在UserID的值周围,我想要的部分就是如何使用"dot"语法使该方法与属性一起使用.
所有这些答案都很有用,感谢大家的贡献.事实上,我标记为"被接受"的答案正是我所寻求的.我很欣赏扩展方法的注意事项(在此之前我从未听说过),当然在某些情况下将扩展方法应用于所有字符串可能会有问题,但在这种情况下我肯定想应用这个方法ToXml()到类中的所有字符串属性.正是医生所要求的.我对XmlSerialization非常熟悉,但在这种情况下需要避免它出于各种原因.
我正在尝试构建一个从数据库中提取一些数据的应用程序,然后使用一些数据创建一个由Excel加载的CSV文件.代码:
foreach (xOFDocInfo cm in docs)
{
string s = bi.Agency
+ "," + cm.BatNbr.Trim()
+ "," + cm.RefNbr
+ "," + cm.DocType
+ "," + cm.OrigDocAmt.ToString()
+ "," + cm.CreateDate.ToShortDateString();
writer.WriteLine(s);
}
Run Code Online (Sandbox Code Playgroud)
"cm.BatNbr"是一个6个字符的零填充数字,例如"001234".我希望Excel将该列格式化为文本,这样我就不会在前面丢失零.我尝试了一些技巧,比如用单引号(撇号)为数字添加前缀,但我得到的只是一个撇号前缀.如果我将单元格设置为文本格式然后删除撇号,我也会丢失前面的零.
我偶然发现,如果我用百分号前缀该东西,Excel会将单元格中的值转换为百分比,所以也许有一些前缀我可以使用它来使Excel在加载它时将单元格中的值作为文本吗?
我正在尝试使用System.Net.Mail为应用程序发送电子邮件,但得到此异常:
System.Net.Mail.SmtpException:发送邮件失败.---> System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它198.238.39.170:25
我使用的代码是:
string mailserver = "Scanmail.ofm.wa.lcl";
MailMessage msg = new MailMessage("albert@einstein.net", "snark@snarky.com", "Very subjective", "A message body!");
SmtpClient client = new SmtpClient(mailserver);
client.Send(msg);
Run Code Online (Sandbox Code Playgroud)
显然,上面的电子邮件地址是虚构的,但在实际代码中,它使用系统中的真实电子邮件地址.邮件服务器地址准确无误.
我很想我需要在那里放置某种安全凭证,但不知道在哪里 - 虽然@ Andre_Calil的建议表明这不是问题,并且邮件服务器可能配置为阻止我的开发机器连接.那怎么克服呢?
我试图从Windows窗体上的LinkLabel打开一个浏览器窗口.单击时,控件将传递给LinkClicked事件,代码将使用以下命令调用默认浏览器:
System.Diagnostics.Process.Start("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)
我希望能够单击链接(即多次运行Start),但只能进入同一浏览器窗口或选项卡.当然,多次点击每次都会为Google打开一个新标签.我知道如何使用如下链接指定命名窗口:
<a href="http://www.google.com" target="googlewin">Click Here!</a>
Run Code Online (Sandbox Code Playgroud)
但是我如何在"开始"命令中执行此操作?
ETA:我在About表单上单击了Internet Explorer自己的可链接链接,每次都会打开一个新窗口,所以甚至微软也许都无法做到这一点.嗯.
我试图让XCOPY复制整个目录树及其所有文件,但是,其中一个目录路径包含一个隐藏文件夹,虽然您可以使用/ h parm来指定复制隐藏文件,但这似乎不是申请隐藏文件夹.我一直都在使用XCOPY的文档,似乎没有一个处理隐藏文件夹的文档.但也许有人知道不同?
`xcopy c:\profiles c:\aprofiles /r /e /h /v /y
Run Code Online (Sandbox Code Playgroud)
除隐藏文件夹外,上述工作正常.我想我可以更改隐藏文件夹以使它们不被隐藏,但是有几百个.
我正在尝试检索Active Directory中的用户信息,但我发现有些事情记录不清楚.例如,我看到的LDAP连接字符串包含一些我不知道的含义的关键字.这是一个示例:
LDAP://ofmdcoly302.ofm.wa.lcl/ou=employees,dc=ofm,dc=wa
Run Code Online (Sandbox Code Playgroud)
什么是关键词"ou"和"dc"应该表示什么?在我们的例子中,"ou = employees"似乎标识了一个特定的AD节点.但是,当我尝试在上面的目录条目上执行.FindAll()时,我得到"从服务器返回了一个引用".我想这意味着它无法找到我想要的东西,但它可能在其他地方可用?在一个地方,我读到"推荐是AD的说法,'这个对象可能存在于另一个领域'".
什么是"ou"和"dc"应该是什么意思?如果我有这个A/D结构,我将如何编码LDAP连接字符串以检索"AR"节点中的信息:

在VBScript中有一个名为CreateObject的函数,它可以通过网页在客户端上运行.我以前用过它:
Set icaObj = CreateObject("Citrix.ICAClient")
CitrixVersion = icaObj.ClientVersion
Run Code Online (Sandbox Code Playgroud)
找出客户端计算机上安装的应用程序版本.
JavaScript中有类似的东西吗?
我对testbed页面进行了一些更改,所以我可以在这里更清楚地提问.
该页面有三个按钮:Set; 明确; 得到.
Set有这个代码:
PreferredCookie = new HttpCookie("PreferredCookie");
PreferredCookie.Value = "Chocolate Chip";
DateTime exp = DateTime.Now.AddDays(1.0d);
PreferredCookie.Expires = exp;
Response.Cookies.Set(PreferredCookie);
Run Code Online (Sandbox Code Playgroud)
清楚有这个:
HttpCookie PreferredCookie = Request.Cookies["PreferredCookie"];
if (PreferredCookie != null)
{
PreferredCookie.Value = "";
PreferredCookie.Expires = DateTime.Now;
Response.Cookies.Set(PreferredCookie);
}
Run Code Online (Sandbox Code Playgroud)
得到这个,输出到asp:Literal:
HttpCookie PreferredCookie = Request.Cookies["PreferredCookie"];
if (PreferredCookie != null)
{
CookieLiteral.Text = "Value = " + PreferredCookie.Value + "<br>";
CookieLiteral.Text += "Expires = " + PreferredCookie.Expires.ToString("MM/dd/yyyy HH:mm:ss");
}
else
{
CookieLiteral.Text = "<h2>No Cookie?</h2>";
}
Run Code Online (Sandbox Code Playgroud)
如果我启动页面并单击"清除",然后使用"获取"进行后续操作,我会看到:
没有Cookie?
如果我然后单击Set,然后Get,我看到: …