对于我的第一个使用c#和selenium的测试用例,我想打开google.com网站,在输入字段中输入内容并单击搜索。问题是,我得到一个System.NullReferenceException,因为WebDriver是Null。但为什么WebDriver为null?
public class Base
{
public IWebDriver WebDriver;
public GooglePageObjects GooglePO;
public PageActions PageAction;
public Base()
{
WebDriver = new ChromeDriver(@"C:\ChromeDriver");
GooglePO = new GooglePageObjects(WebDriver);
PageAction = new PageActions(WebDriver);
}
}
public class GooglePageObjects
{
IWebDriver WebDriver;
public GooglePageObjects(IWebDriver WebDriver)
{
WebDriver = this.WebDriver;
}
public IWebElement SearchField => WebDriver.FindElement(By.CssSelector("#gs_lc0 #lst-ib"));
public IWebElement SearchButton => WebDriver.FindElement(By.CssSelector("#gs_lc0 #lst-ib"));
public IWebElement SearchBar => WebDriver.FindElement(By.CssSelector("#hdtb-s #hdtb-msb"));
}
好的,我发现了错误。它应该是:
this.WebDriver = WebDriver
并不是:
WebDriver = this.WebDriver
我建议你这样做:https://www.c-sharpcorner.com/UploadFile/8a67c0/C-Sharp-coding-standards-and-naming-conventions/
在这种情况下,您不会混淆相同的变量名称。
因此,代码的第二部分将是:
public class GooglePageObjects
{
IWebDriver _webDriver;
public GooglePageObjects(IWebDriver webDriver)
{
_webDriver = webDriver;
}
}