我一直使用用C#编写的Selenium Webdriver几个月,现在我得到了相当的能力。这是我的工作场景,我正在测试基于Web的浏览器产品的用户界面。问题是我需要立即测试许多用户并监视服务器内存等。我过去曾经使用过jMeter进行服务器负载测试,并且我非常希望使用硒来尽可能地为尽可能多的用户做类似的事情。C# - Selenium Webdriver - 无头浏览器 - 单元测试 - 基础知识
根据我的理解,我可能可以使用无头浏览器与Selenium结合使用(对于任何不知道的情况,加载多个浏览器往往会让您的机器内存吃光,并限制您可以在6/7浏览器下运行同时)
所以我想,我将使用一个无头浏览器,看看我能一次走多少。我的研究让我相信我可以使用SimpleBrowser和硒一起实现这一点。
很难找到这两个组合的例子。所以我的第一个问题很多,如果这是一个无头浏览器,页面元素是否真的存在,或者它只是在客户端和服务器之间发送的请求?
例如,如果我使用硒找到一个页面上的元素我会写
IWebElement用户名= driver.FindElement(By.XPath( “//输入[@ ID = 'MainContent_txtUsername']”) ); username.SendKeys(userUserName);
我已经写了相同的单元测试,并说它已通过。但是,当我发送密码并“单击”登录按钮时,我无法获得下一个TestMethod通过。即登录后我希望找到一个值为“更改公司密码”的按钮。这个单元测试没有通过,所以它导致我相信它没有执行登录。
所以,我的问题是,在无头浏览器中是否存在这些元素或者它们是如何工作的?如果是这样,我该如何“点击”登录按钮?谢谢你们
这里是我的代码:
[TestMethod]
public void AddPhoneToCartAndVerifyInCart()
{
//This is the placeholder to write actual code.
Assert.AreEqual(" SPC Connect ", driver.Title);
}
[TestMethod]
public void LogIn()
{
Assert.IsTrue((driver.FindElement(By.XPath("//input[@class='btn btn-info']")).Text).Contains("Login"));
IWebElement username = driver.FindElement(By.XPath("//input[@id='MainContent_txtUsername']"));
username.SendKeys(userAccount);
IWebElement password = driver.FindElement(By.XPath("//input[@id='MainContent_txtPassword']"));
password.SendKeys(userPassword);
IWebElement clickSubmit = driver.FindElement(By.XPath("//input[@class='btn btn-info']"));
clickSubmit.Click();
}
[TestMethod]
public void LogInSuccess()
{
Assert.IsTrue((driver.FindElement(By.XPath("//input[@id='MainContent_btnChangeCompanyPassword']")).Text).Contains("Change Company Password"));
}