Selenium点击错误的元素

Cra*_*her 5 c# winappdriver

我有很多测试.有时如果找不到元素,只需点击屏幕的左上角即可.这不会一直发生,但确实发生了.我不确定为什么会这样.在我的setUp方法中,我告诉它单击元素"Maximize"但是如果它找不到该元素我将它放入catch并忽略它.出于某种原因,当它找不到元素时,只需单击屏幕左上角的应用程序会话即可.

有没有人知道为什么会发生这种情况,或者只是硒有时会如何反应

我的代码如下

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
            {
Run Code Online (Sandbox Code Playgroud)

如果它不存在,这是我无法忽略的元素

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

                //ignore
            }
Run Code Online (Sandbox Code Playgroud)

She*_*hat 0

您可以先尝试获取当前窗口句柄,然后尝试查找并获取指向窗口的“最大化”按钮的 Web 元素。为了安全起见,您可能还需要在 WebElement 位置上进行简单的等待。

此 api 对于 C# 客户端到 selenium 可能很有用 - driver.SwitchTo().Window(handle)

有关详细信息,您可以在这里查看