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

遇到System.ArgumentNullException:如何将字符串转为有效URL?

解决System.ArgumentNullException: Argument 'url' cannot be null的问题

嘿,先帮你揪出最核心的问题——变量作用域冲突!你在类里定义了一个Urlpath属性,但在Button_URL方法里又声明了一个同名的局部变量string Urlpath = dialog.ResponseText;,这就导致类级别的Urlpath完全没被赋值,一直是null。当你调用Driver.Navigate().GoToUrl(Urlpath)时,传的是那个未赋值的类属性,自然就抛出空参数异常了。

第一步:修复变量作用域问题

把方法里的局部变量声明去掉,直接给类属性赋值就行:

private string Urlpath { get; set; }

private void Button_URL(object sender, RoutedEventArgs e) 
{
    var dialog = new MyDialog();
    if (dialog.ShowDialog() == true) 
    {
        MessageBox.Show("Refreshing a URL requires you to select a folder.");
        // 去掉前面的string,直接给类的Urlpath属性赋值
        Urlpath = dialog.ResponseText; 
        Status_HTML.Content = "Selected:" + "\n" + Urlpath + "\n" + "Save and/or edit any file in your folder to get started!";
    }
}

第二步:将字符串转换为有效Uri对象(可选但推荐)

虽然Selenium的GoToUrl方法本身支持直接传入字符串,但为了确保URL格式合法,避免后续踩坑,建议把字符串转换成Uri对象:

// 先检查Urlpath是否不为空且格式合法
if (!string.IsNullOrEmpty(Urlpath) && Uri.TryCreate(Urlpath, UriKind.Absolute, out Uri validUri))
{
    Driver.Navigate().GoToUrl(validUri);
}
else
{
    // 处理无效URL的情况,比如提示用户输入正确的URL
    MessageBox.Show("请输入有效的URL地址!");
}

这里用Uri.TryCreate方法可以安全地验证并转换字符串:

  • 第一个参数是你的URL字符串
  • 第二个参数UriKind.Absolute确保我们只接受完整的绝对URL(比如带http/https前缀的)
  • 如果转换成功,validUri就是可用的Uri对象,直接传给GoToUrl即可;如果失败,就给用户一个友好提示。

最后再提个醒:确保调用Driver.Navigate().GoToUrl(Urlpath)的时机是在Button_URL方法执行之后,也就是Urlpath已经被正确赋值之后,不然还是会拿到null哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:58:48