РЕДАКТИРОВАТЬ: Это заняло всего неделю, но я в конце концов обнаружил проблему, в основном из-за чистой удачи и еще одной ошибки с более конкретным исправлением.Проблема была с connStr, который я сделал, который по какой-то причине на этом компьютере выдал мне случайную ошибку «System.ArgumentException: ключевое слово не поддерживается:« источник данных ».»во время выполнения.Затем я обнаружил, что для этого нужно было переименовать connStr следующим образом:
connStr = @"server = (server name); Initial Catalog = AutoTestDB; Integrated Security = true";
Если у вас возникла эта ошибка, как у меня, попробуйте этот метод подключения. END EDIT
В настоящее время я работаю над автоматизированным тестированием с использованием автоматического тестирования Katalon, в основном Selenium для Chrome, и всякий раз, когда пытаюсь добавить результаты теста в нашу базу данных результатов тестированияИсключение SQL «Ошибка, связанная с сетью или экземпляром, возникшая при установлении соединения с SQL Server.» продолжает появляться.TCP / IP открыт, как и брандмауэр и удаленные подключения, и у меня открыт и работает SQL-SMS во время работы базы данных с подключением SQL.
Однако это происходит только тогда, когда я использую определенноемашина для доступа к базе данных, которая хранится в самой машине, как и на любой другой машине, которую я использую, и все они работают отлично.Единственное отличие, которое я могу придумать для этой машины, заключается в том, что она использует SQL Express, в то время как все остальные, которыми я пользуюсь, имеют полную версию Microsoft SQL-SMS-17.
Это подлинный случай «Она работает на«Моя машина», за исключением оговорки, что она работает на нескольких других и даже на разных пользователях, поскольку мы все работаем над этим автоматическим тестированием, эта машина является единственным исключением для этого неработающего кода, с той лишь разницей, что она использует SQLExpress, который следует учитывать с помощью \\ SQLExpress.
C # кода с соединениями SQL для редактирования значений в уже созданную таблицу в базе данных.
public void testDBAdd(String testName, Boolean pass, String testComment)
{
SqlConnection con;
SqlDataAdapter daAutoTest;
DataSet dsAutoTestDB = new DataSet();
SqlCommandBuilder cmdBAutoTest;
String connStr, sqlAutoTest;
connStr = @"datasource = .\\sqlexpress; Initial Catalog = AutoTestDB; Integrated Security = true";
con = new SqlConnection(connStr);
sqlAutoTest = @"SELECT * FROM TestResults";
daAutoTest = new SqlDataAdapter(sqlAutoTest, connStr);
cmdBAutoTest = new SqlCommandBuilder(daAutoTest);
daAutoTest.FillSchema(dsAutoTestDB, SchemaType.Source, "AutoTest");
daAutoTest.Fill(dsAutoTestDB, "AutoTest");
foreach (DataRow drAutoTest in dsAutoTestDB.Tables["AutoTest"].Rows)
{
if (pass == true && drAutoTest["testName"].ToString() == testName)
{
drAutoTest.BeginEdit();
drAutoTest["testName"] = testName;
drAutoTest["testResult"] = 1;
drAutoTest["testComment"] = testComment;
drAutoTest.EndEdit();
daAutoTest.Update(dsAutoTestDB, "AutoTest");
}
else if (pass == false && drAutoTest["testName"].ToString() == testName)
{
drAutoTest.BeginEdit();
drAutoTest["testName"] = testName;
drAutoTest["testResult"] = 0;
drAutoTest["testComment"] = "Exception: " + testComment;
drAutoTest.EndEdit();
daAutoTest.Update(dsAutoTestDB, "AutoTest");
}
}
}
Код, который запускает реальный тест и собирает его, если он прошел или не прошел из-за наличия определенных элементов, в этом случае отображается определенная страница, когда пользователь входит в систему и нажимает кнопку.
public void settingTest<TestNumber>()
{
IWebDriver driver = new ChromeDriver();
ChromeOptions options = new ChromeOptions();
options.AddArguments("--start-maximized");
driver = new ChromeDriver(options);
String testName = "<Test Number>", testComment = "";
Boolean pass = false;
try
{
settingsLogin(driver);
settingsClick(driver);
Assert.IsTrue(driver.FindElement(ElementLocator).Displayed);
if (driver.FindElement(ElementLocator).Displayed == true)
{
testComment = "Pass";
pass = true;
testDBAdd(testName, pass, testComment);
}
}
catch (Exception ex)
{
testComment = "" + ex.TargetSite + "" + ex.Message;
testDBAdd(testName, pass, testComment);
}
finally
{
driver.Close();
}
}