Я использую IEDriver для запуска кода селена в IE (используя C #). Иногда при наборе строки json (это требуется моим тестированием) вместо двоеточия будет использоваться точка с запятой. Это происходит только в IE.
Когда я использую буфер обмена для вставки строки, он не заменяет двоеточие точкой с запятой. Однако мы хотим запустить тесты одновременно, поэтому использование буфера обмена не является поточно-ориентированным.
В настоящее время мы просто читаем то, что было напечатано, и если появляется точка с запятой, мы вводим заново. Но это занимает много времени, потому что, как вы все знаете, в IE
печатание происходит очень медленно
wait.WaitForSendKeysText(Defaults_Textbox, Constants.TEN_SECONDS, rebuiltDefaultsJson);
//this whole section here is a poor work around for IE.. we should move it into WaitForSendKeys at some point
int i = 0;
while (Defaults_Textbox.GetAttribute("value").Contains(";") && !rebuiltDefaultsJson.Contains(";"))
{
i++;
FunctionalUtil.LogMessage("Semicolon Error in defaults box, retrying...");
DefaultsSelect();
DefaultsClear();
wait.WaitForSendKeysText(Defaults_Textbox, Constants.TEN_SECONDS, rebuiltDefaultsJson);
if (i==3)
{
Assert.Fail("Tried 3 times to type a json block without a semicolon and it didnt work");
}
}
FunctionalUtil.LogMessage("Connection information is entered Successfully");
public void WaitForSendKeysText(IWebElement element, int waitInSeconds, string text)
{
if (!string.IsNullOrEmpty(element.GetAttribute("value")))
{
element.Clear();
}
if(Utilities.useSeleniumGrid == "true" || Utilities.isMobile)
{
element.SendKeys(text);
waitInSeconds = 60;
}
else
{
// The Clipboard is a shared resource and cannot be accessed safely in a multi-threaded setup
Thread thread = new Thread(() => Clipboard.SetText(text));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
element.SendKeys(OpenQA.Selenium.Keys.Control + "v");
}
ExplicitWaitForTextToBePresentInValue(element, waitInSeconds, text);
}