You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#在Visual Studio中自动控制网页文本框传值、操作登录按钮

问题修复方案

现有代码核心错误点

  • 混淆了浏览器启动方式:通过Process.Start打开的Edge和实例化的EdgeDriver属于完全独立的进程,EdgeDriver无法控制前者打开的页面,所有操作都应该通过EdgeDriver自带的页面加载方法实现
  • 驱动未加载目标页面:实例化EdgeDriver后没有调用页面跳转方法,驱动默认打开空白页,必然找不到目标元素
  • 元素定位规则错误:使用By.Name选择器时传入的是元素的class属性值,Name选择器仅能匹配元素的name属性,定位逻辑完全不匹配
  • 缺少页面加载等待逻辑:未等待页面元素渲染完成就发起查找请求,大概率会返回元素不存在的异常
  • JavaScript方法拼写错误:DOM方法应为getElementsByClassName而非getElementsByClass,且该方法返回元素集合,需要指定下标才能获取单个元素

可正常运行的修正代码

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Support.UI;
using SeleniumExtras.WaitHelpers;

namespace HtmlAgilityPackTest
{
    class Program
    {
        static void Main(string[] args)
        {
            // 初始化Edge驱动
            IWebDriver driver = new EdgeDriver();
            // 最大化窗口避免元素被遮挡
            driver.Manage().Window.Maximize();
            // 加载目标页面
            driver.Navigate().GoToUrl("https://developer.servicenow.com");

            // 初始化显式等待,最长等待10秒
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            
            try
            {
                // 定位用户名输入框,此处使用Class选择器匹配类名
                IWebElement usernameInput = wait.Until(ExpectedConditions.ElementIsVisible(By.ClassName("username-box")));
                // 传入账号
                usernameInput.SendKeys("xyz@gmail.com");

                // 定位登录按钮
                IWebElement signInBtn = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[contains(text(),'Sign In')]")));
                // 点击登录按钮
                signInBtn.Click();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"操作失败:{ex.Message}");
            }
            finally
            {
                // 操作完成后按需保留或关闭驱动
                // driver.Quit();
            }
        }
    }
}

前置依赖说明

  • 需在NuGet包管理器中安装三个包:Selenium.WebDriver、Selenium.WebDriver.MSEdgeDriver、Selenium.Support
  • 确保安装的MSEdgeDriver版本和本地Edge浏览器版本完全一致,否则会出现驱动启动失败的问题

内容的提问来源于stack exchange,提问作者jessy mary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:54:07