2017-08-02 14 views
5

Mam wiele testów. Czasami, jeśli nie można znaleźć elementu, kliknie on w lewym górnym rogu ekranu. Nie zdarza się to jednak przez cały czas. Nie jestem pewien, dlaczego tak się dzieje. W mojej metodzie setUp mówię, żeby kliknął element "Maksymalizuj", jednak jeśli nie może znaleźć tego elementu, wstawiam go do haka i zignoruję go. Z jakiegoś powodu, gdy nie może znaleźć elementu, po prostu klika w lewym górnym rogu ekranu, który ma sesję aplikacji.Selen kliknięcie niewłaściwego elementu

ma ktoś jakieś pomysły dlaczego tak się dzieje, czy jest to po prostu jak selen czasami reaguje

Mój kod wygląda następująco

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 
      { 

Jest to element Mam problem ignorowania jeśli nie robi” t istnieć

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

       //ignore 
      } 
+0

Moja pamięć Selen jest zamglony.; ale czy to możliwe, że faktycznie znajduje element w DOM, nawet jeśli nie ma go na stronie? Po znalezieniu elementu prawdopodobnie musisz sprawdzić, czy element jest widoczny przed kliknięciem. – jpaugh

Odpowiedz

0

można próbować uzyskać aktualny uchwyt okna, a potem próbować zlokalizować i uzyskać Webelement wskazujący na przycisku maksymalizacji o zwycięstwo dow. Być może, aby zapewnić sobie bezpieczeństwo, możesz również potrzebować prostego czekania na lokalizację WebElement.

Ten interfejs API może być przydatna dla C# klienta do selenu - driver.SwitchTo() Okno (uchwyt)

A o szczegóły można sprawdzić here

Powiązane problemy