Селен щелкнув по неверному элементу

У меня есть ряд тестов. Иногда, если элемент не может быть найден, он просто щелкает в левом верхнем углу экрана. Это не происходит все время, однако это случается. Я не уверен, почему это происходит. В моем методе setUp я говорю ему нажать на элемент "Развернуть", однако, если он не может найти этот элемент, я помещаю его в ловушку и игнорирую его. По какой-то причине, когда он не может найти элемент, он просто щелкает в верхнем левом углу экрана, в котором находится сеанс приложения.

Есть ли у кого-нибудь идеи, почему это происходит, или просто селен иногда реагирует?

Мой код выглядит следующим образом

private string wordId = OfficeVersion.Word();
    private string excelId = OfficeVersion.Excel();
    private string powerPointId = OfficeVersion.PowerPoint();
    private const string AppDriverUrl = "http://127.0.0.1:4723";
    public static WindowsDriver<WindowsElement> excelSession;
    public static WebDriverWait webDriverWait;
    xl.Workbook WB;
    public static bool skipTearDown = false;
    WindowsElement create;
    WindowsElement blankWorkBook;
    public static DesiredCapabilities appCapabilities = new DesiredCapabilities();
    [TestInitialize]
appCapabilities.SetCapability("app", excelId);

            var initialSession = new WindowsDriver<WindowsElement>(new Uri(AppDriverUrl), appCapabilities);

            var capabilities = new DesiredCapabilities();
            capabilities.SetCapability("app", "Root");
            excelSession = new WindowsDriver<WindowsElement>(new Uri(AppDriverUrl), capabilities);
            webDriverWait = new WebDriverWait(excelSession, TimeSpan.FromSeconds(10));

            CommonMethods.keyCheck(excelSession);
            webDriverWait = new WebDriverWait(excelSession, TimeSpan.FromSeconds(10));
            CommonMethods.IsElementDisplayed(excelSession, new StackTrace(true).GetFrame(0).GetFileLineNumber(), new StackTrace(true).GetFrame(0).GetMethod(), "CreateErrorIcon", "Create error when launching Excel");
            try
            {

Это элемент, который я не могу игнорировать, если он не существует

                webDriverWait.Until(ExpectedConditions.ElementTo‌​BeClickable(excelSession.FindElementByName("Maximize"))).Click();
            }
            catch (Exception)
            {

                //ignore
            }

1 ответ

Вы можете сначала попытаться получить текущий дескриптор окна, а затем попытаться найти и получить веб-элемент, указывающий на кнопку "Развернуть" для окна. Возможно, вам также может понадобиться просто подождать определения местоположения WebElement, чтобы быть в безопасности.

Этот API может быть полезен для клиента C# для selenium - driver.SwitchTo().Window(handle)

А для деталей, вы можете проверить здесь

Я столкнулся с той же проблемой при попытке выбрать элемент из поля со списком. Попытка щелкнуть элемент всегда приводит к щелчку в верхнем левом углу экрана. Очень неприятно.

Я обошел это, используя действие, чтобы переместить мышь к элементу, а затем выполнить щелчок.

var a = new Actions(Session);
a.MoveToElement(v);
a.Click();
a.Perform();
Другие вопросы по тегам