У меня есть тест автоматизации, в котором приведена следующая строка кода, она предназначена для ввода в строку поиска после отправки ключей:
driver.FindElement(By.XPath("//*[@id='standard-uncontrolled']")).SendKeys("@Auto");
driver.FindElement(By.XPath("//*[@id='standard-uncontrolled']")).SendKeys(Keys.Enter);
Отлично работает, когда я медленно запускаю его в режиме отладки. Но без режима отладки Chrome будет аварийно завершать работу при выполнении SendKeys(Keys.Enter)
, и Visual Studio отобразит это сообщение:
Message: Test method threw exception:
OpenQA.Selenium.WebDriverException: Unexpected error.
System.Net.WebException: Unable to connect to the remote server --->
System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:64847
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
at System.Net.HttpWebRequest.GetRequestStream()
at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo)
at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
Это HTML-код элемента, с которым я столкнулся
<th class="jss1543 jss1544 jss1534 jss1527 percent-40" scope="col">
<div class="jss1536">
<div class="jss1551 jss1552 jss1528">
<div class="jss1568 jss1555 jss1530 jss1569 jss1556">
<input aria-invalid="false" class="jss1578 jss1563 jss1531" id="standard-uncontrolled" placeholder="Search" type="text" value="">
</div>
</div>
</div>
</th>
Обновите скрипт, который я использую:
using System;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using SeleniumExtras.WaitHelpers;
using OpenQA.Selenium.Interactions;
using System.Threading;
namespace AutoKaercher
{
[TestClass]
public class CRUD_Languages
{
private TestContext testContextInstance;
private IWebDriver driver;
private string intranetURL;
private string languagesName;
private string languagesCode;
[TestMethod]
[TestCategory("Chrome")]
public void _CRUD_Languages()
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
//Login
driver.Navigate().GoToUrl(intranetURL + "/");
driver.Manage().Window.Maximize();
driver.FindElement(By.Name("username")).SendKeys("globaladmin");
driver.FindElement(By.Name("password")).SendKeys("1234@Abcd");
driver.FindElement(By.XPath("//*[@id='root']/div/div[2]/div/form/div[2]/div[3]/button")).Click();
//Go to Languages
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='root']/div/div[2]/header/div/div/div[1]/span[2]"))).Click();
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='root']/div/header/nav/div/ul/li[1]"))).Click();
//Create Languages
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='root']/div/div[3]/div/div[1]/div[1]/div/button"))).Click();
driver.FindElement(By.XPath("//*[@id='body']/div[2]/div[2]/div[2]/div/div[1]/div/div/input")).SendKeys("@Automation Testing");
driver.FindElement(By.XPath("//*[@id='body']/div[2]/div[2]/div[2]/div/div[2]/div/div/input")).SendKeys("@AT");
driver.FindElement(By.XPath("//*[@id='body']/div[2]/div[2]/div[2]/div/div[4]/button[2]")).Click();
//Check for create Languages successfully
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='root']/div/div[1]/div/div"))).Click();
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='root']/div/div[3]/div/div[1]/div[2]/div/table/tbody/tr[1]/td[1]")));
driver.FindElement(By.XPath("//*[@id='standard-uncontrolled']")).SendKeys("@Auto");
driver.FindElement(By.XPath("//*[@id='standard-uncontrolled']")).SendKeys(Keys.Enter);
//IWebElement searchLanguage = driver.FindElement(By.XPath("//*[@id='standard-uncontrolled']"));
//searchLanguage.SendKeys("@Auto");
//Actions inputEnter = new Actions(driver);
//inputEnter.SendKeys(searchLanguage, Keys.Enter);
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='root']/div/div[3]/div/div[1]/div[2]/div/table/tbody/tr[1]/td[1]")));
languagesName = driver.FindElement(By.XPath("//*[@id='root']/div/div[3]/div/div[1]/div[2]/div/table/tbody/tr/td[1]")).Text;
languagesCode = driver.FindElement(By.XPath("//*[@id='root']/div/div[3]/div/div[1]/div[2]/div/table/tbody/tr/td[2]")).Text;
if (languagesName != "@Automation Testing")
{
driver.Quit();
}
if (languagesCode != "@AT")
{
driver.Quit();
}
//Edit Languages
driver.FindElement(By.XPath("//*[@id='root']/div/div[3]/div/div[1]/div[2]/div/table/tbody/tr/td[3]/div/span[1]")).Click();
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='body']/div[2]/div[2]/div[2]/div/div[1]/div/div/input"))).Clear();
driver.FindElement(By.XPath("//*[@id='body']/div[2]/div[2]/div[2]/div/div[1]/div/div/input")).SendKeys("@Automation Testing Edited");
driver.FindElement(By.XPath("//*[@id='body']/div[2]/div[2]/div[2]/div/div[2]/div/div/input")).Clear();
driver.FindElement(By.XPath("//*[@id='body']/div[2]/div[2]/div[2]/div/div[2]/div/div/input")).SendKeys("@AT-@at");
driver.FindElement(By.XPath("//*[@id='body']/div[2]/div[2]/div[2]/div/div[6]/button[2]")).Click();
//Check for edit Languages successfully
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='root']/div/div[1]/div/div"))).Click();
languagesName = driver.FindElement(By.XPath("//*[@id='root']/div/div[3]/div/div[1]/div[2]/div/table/tbody/tr/td[1]")).Text;
languagesCode = driver.FindElement(By.XPath("//*[@id='root']/div/div[3]/div/div[1]/div[2]/div/table/tbody/tr/td[2]")).Text;
if (languagesName != "@Automation Testing Edited")
{
driver.Quit();
}
if (languagesCode != "@AT-@at")
{
driver.Quit();
}
//Delete Languages
driver.FindElement(By.XPath("//*[@id='root']/div/div[3]/div/div[1]/div[2]/div/table/tbody/tr/td[3]/div/span[2]")).Click();
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='intranet-dialog']/div[2]/div/div/div[3]/button[2]"))).Click();
//Check for delete Languages successfully
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='root']/div/div[1]/div/div"))).Click();
driver.FindElement(By.XPath("//*[@id='standard-uncontrolled']")).Clear();
driver.FindElement(By.XPath("//*[@id='standard-uncontrolled']")).SendKeys("@Auto");
driver.FindElement(By.XPath("//*[@id='standard-uncontrolled']")).SendKeys(Keys.Enter);
if (driver.FindElements(By.XPath("//*[@id='root']/div/div[3]/div/div[1]/div[2]/div/table/tbody/tr/td[1]")).Count != 0)
{
driver.Quit();
}
}
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
[TestInitialize()]
public void SetupTest()
{
intranetURL = "https://rkistage.app.kaercher.com";
//Open Chrome in Incognito mode
ChromeOptions options = new ChromeOptions();
options.AddArguments("--incognito");
driver = new ChromeDriver(options);
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(10);
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
}
[TestCleanup()]
public void MyTestCleanup()
{
driver.Quit();
}
}
}
Я использую Chrome версии 73.0.3683.86 и ChromeDriver версии 73.0.3683.68.
У кого-нибудь есть идея, почему это происходит? Заранее спасибо!