Selenium点击了错误的元素

时间:2017-08-02 14:19:24

标签: c# winappdriver

我有很多测试。有时,如果找不到元素,只需点击屏幕的左上角即可。这种情况并非始终如此发生。我不确定为什么会这样。在我的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
            }

2 个答案:

答案 0 :(得分:0)

您可以先尝试获取当前窗口句柄,然后尝试找到并获取指向窗口最大化按钮的Webelement。可能,您可能还需要在WebElement上进行简单的等待以确保安全。

这个api对于selenium的C#客户端可能很有用 - driver.SwitchTo()。Window(句柄)

有关详细信息,您可以查看here

答案 1 :(得分:0)

尝试从组合框中选择项目时遇到了同样的问题。尝试单击该项目始终只会导致单击屏幕左上方。超级沮丧。

我通过使用“动作”将鼠标移到元素上然后单击来解决它。

var a = new Actions(Session);
a.MoveToElement(v);
a.Click();
a.Perform();