gpt4 book ai didi

javascript - 如何在 C# 中运行 GeckoFx "GetElementById"函数?

转载 作者:行者123 更新时间:2023-12-02 15:02:20 25 4
gpt4 key购买 nike

我最近开始了一个新项目,它可以在默认的 Visual Studio 2015“webBrowser”中正常工作。不幸的是,默认浏览器不支持我需要它运行的一些网络元素。因此,我决定寻找一个可以运行此元素的浏览器替代方案。

经过一些研究后,我决定使用 GeckoFx,主要是因为我读到它的命令功能的工作方式与原始的 webBrowser 非常相似(例如 GetElementById 之类的命令)。

我正在尝试创建一个程序来自动登录“login.live.com”。我不知道为什么,但是当它运行代码时,“密码”值条目似乎可以工作,但电子邮件值条目却不能。请帮我找出原因!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace XLP_2_11_16__2_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//This is not the actual folder location. Part of it was suppstituded by "..." for safety reasons.
Gecko.Xpcom.Initialize(@"C:\...\bin\Debug\xulrunner");
}

private void Form1_Load(object sender, EventArgs e)
{
geckoWebBrowser1.Navigate("https://login.live.com");
}

private void button1_Click(object sender, EventArgs e)
{
//Actual email and password was substituted for safety reasons.
string email = "myemail@email.com";
string pass = "mypassword";

geckoWebBrowser1.Document.GetElementById("i0116").SetAttribute("value", email);
geckoWebBrowser1.Document.GetElementById("i0118").SetAttribute("value", pass);
geckoWebBrowser1.Navigate("javascript:void(document.forms[0].submit())");
}

private void geckoWebBrowser1_Click(object sender, EventArgs e)
{

}

private void geckoWebBrowser1_DocumentCompleted(object sender, Gecko.Events.GeckoDocumentCompletedEventArgs e)
{

}

public void Delayed(int delay, Action action)
{
Timer timer = new Timer();
timer.Interval = delay;
timer.Tick += (s, e) => {
action();
timer.Stop();
};
timer.Start();
}
}
}

这是表单设计:

http://i.imgur.com/O211Mgu.png?1

如果有人知道更好的方法,请告诉我请帮忙!!

最佳答案

我能够复制您所目睹的行为。我相信这是因为输入字段类型是“电子邮件”,它触发了验证。我能够使用 Gecko.DOM 模块中的 GeckoInputElement 类型填充该字段。

以下代码对我有用:

var emailField = new Gecko.DOM.GeckoInputElement(geckoWebBrowser1.Document.GetHtmlElementById("i0116").DomObject);
emailField.Value = @"test@test.com";

var passwordField = new Gecko.DOM.GeckoInputElement(geckoWebBrowser1.Document.GetHtmlElementById("i0118").DomObject);
passwordField.Value = @"test_password";

关于javascript - 如何在 C# 中运行 GeckoFx "GetElementById"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35345144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com