Skip to main content
 首页 » 编程设计

c#之如何修复 : Use of unassigned local IWebElement variable

2024年02月25日36jirigala

对于下面的代码,

IWebElement element; // = new WebElement(); 
try 
{ 
    element = driver.FindElement(By...); 
} 
catch (Exception) 
{ 
} 
element.Click(); 

如何解决Use of unassigned local variable的错误?

我知道 Use of unassigned local variable 的错误,解决办法是最初给它赋值,但我试过 new WebElement(); 和new IWebElement(); 但它们对我不起作用。

有什么帮助吗?

附言。我试图在 catch 语句中循环并找到它,这就是为什么我需要 try 之外的元素声明,以及之后的 Click()

请您参考如下方法:

编译器帮助修复错误。他告诉您,如果 element 初始化期间出现异常,这将失败并在 element.Click() 处出现 NullReferenceException。所以他希望你在任何情况下都分配一些东西(或作为默认值)。您有多种选择来修复...

在try中使用初始化后的对象:

try 
{ 
    element = driver.FindElement(By...); 
    element.Click();  // safe because there was no exception 
} 
catch (Exception) 
{ 
    // empty catch is bad, log this at least 
} 

“隐藏”编译器错误,但通过为变量赋值让潜在的错误存在:

IWebElement element = null; 
try 
{ 
    element = driver.FindElement(By...); 
} 
catch (Exception) 
{ 
    // empty catch is bad, log this at least 
} 
 
element.Click(); // still a bug if there was an exception this will cause a NullReferenceException 

如果您改用 if(element != null) element.Click();,则此选项完全没问题。

或者你可以使用 catch/finally 来分配一些东西(这里是最糟糕的选择):

IWebElement element; 
try 
{ 
    element = driver.FindElement(By...); 
} 
catch (Exception) 
{ 
    element = null; 
} 

但随后您必须检查 null,使用 if(element != null) 或使用:

element?.Click(); // if not null Click is called