public void RightClickAndWait(int secondsToWait = 1, bool ScrollToObject = true, bool checkErrors = true, int x = 0, int y = 0)
{
if (ScrollToObject)
BitrixFramework.ScrollOnCoords(this);
if (x != 0 && y != 0)
{
OpenQA.Selenium.Interactions.Actions builder = new OpenQA.Selenium.Interactions.Actions(BitrixFramework.WebDriver);
builder.MoveToElement(BitrixFramework.FindWebElement(this), x, y).ContextClick().Build().Perform();
}
else
{
try
{
OpenQA.Selenium.Interactions.Actions builder = new OpenQA.Selenium.Interactions.Actions(BitrixFramework.WebDriver);
builder.MoveToElement(BitrixFramework.FindWebElement(this)).ContextClick().Build().Perform();
}
catch (NullReferenceException)
{
Log.MesError("Не найден объект \"" + this.description + "\" по пути \"" + this.by.ToString() + "\"");
throw;
}
catch (StaleElementReferenceException)
{
Log.MesQuestion("Изменился DOM страницы, и элемента " + this.description + " больше нет в кеше. Подождем 5 сек и попробуем найти его ещё разок");
BitrixFramework.Wait(5);
try
{
OpenQA.Selenium.Interactions.Actions builder = new OpenQA.Selenium.Interactions.Actions(BitrixFramework.WebDriver);
builder.MoveToElement(BitrixFramework.FindWebElement(this)).ContextClick().Build().Perform();
}
catch
{
Log.MesError("Не найден объект \"" + this.description + "\" по пути \"" + this.by.ToString() + "\"");
throw;
}
}
catch (OpenQA.Selenium.WebDriverException e)
{
Log.MesQuestion("Висит страница \r\nMessage: " + e.Message + "\r\nStackTrace: " + e.StackTrace + "\r\n<a href=\"" + ScreenCapture.Printscreen() + "\">скриншот</a>");
BitrixFramework.Refresh();
BitrixFramework.Wait(5);
}
}
Log.MesNormal(String.Format("'{0}' -> Правый клик", description));
BitrixFramework.Wait(secondsToWait);
if (checkErrors)
{
BitrixFramework.CheckJSErrors();
GM.CheckContentOnErrors();
}
}