public void ClickOnDetailsTab() { if (FeedTab.Enabled) { DetailsTab.Click(); } else { throw new Exception("Details tab is not found or not clickable"); } }
public void ClickOnDetailsTab() { if (DetailsTab.Displayed) { DetailsTab.Click(); } else { throw new Exception("Element is not found or not clickable"); } }
/// <summary> /// Clicks the user-specified element, and then waits for a window to close or open, or a page to load, depending on the element that was clicked /// </summary> /// <param name="buttonOrLinkElem">The element to click on</param> public dynamic ClickAndWait(IWebElement buttonOrLinkElem) { // Error handler to make sure that the button that the tester passed in the parameter is actually on the page if (Browser.Exists(Bys.ActivityMainPage.PubDetailsTab)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == PubDetailsTab.GetAttribute("outerHTML")) { // buttonOrLinkElem.Click(); JavascriptUtils.Click(Browser, buttonOrLinkElem); this.WaitUntil(Criteria.ActivityMainPage.PubDetailsTabAvailCatTblVisible); return(null); } } if (Browser.Exists(Bys.ActivityMainPage.DetailsTab)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == DetailsTab.GetAttribute("outerHTML")) { JavascriptUtils.Click(Browser, buttonOrLinkElem); this.WaitUntil(Criteria.ActivityMainPage.PageReady); return(null); } } if (Browser.Exists(Bys.ActivityMainPage.PubDetailsTabAvailCatSearchBtn)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == PubDetailsTabAvailCatSearchBtn.GetAttribute("outerHTML")) { buttonOrLinkElem.Click(); this.WaitUntil(Criteria.ActivityMainPage.PubDetailsTabAvailCatTblSearchCatLoadElemVisible); this.WaitUntil(Criteria.ActivityMainPage.PubDetailsTabAvailCatTblSearchCatLoadElemNotVisible); return(null); } } if (Browser.Exists(Bys.ActivityMainPage.DetailsTabUnPublishBtn)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == DetailsTabUnPublishBtn.GetAttribute("outerHTML")) { buttonOrLinkElem.Click(); Browser.WaitForElement(Bys.ActivityMainPage.DetailsTabUnPublishConfirmBtn, ElementCriteria.IsVisible); return(null); } } if (Browser.Exists(Bys.ActivityMainPage.DetailsTabUnPublishConfirmBtn)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == DetailsTabUnPublishConfirmBtn.GetAttribute("outerHTML")) { buttonOrLinkElem.Click(); Browser.WaitForElement(Bys.ActivityMainPage.DetailsTabSavebtn, ElementCriteria.IsVisible); return(null); } } if (Browser.Exists(Bys.ActivityMainPage.DetailsTabPublishbtn)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == DetailsTabPublishbtn.GetAttribute("outerHTML")) { buttonOrLinkElem.Click(); Browser.WaitForElement(Bys.ActivityMainPage.DetailsTabPublishConfirmbtn, ElementCriteria.IsVisible); return(null); } } if (Browser.Exists(Bys.ActivityMainPage.DetailsTabPublishConfirmbtn)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == DetailsTabPublishConfirmbtn.GetAttribute("outerHTML")) { buttonOrLinkElem.Click(); Browser.WaitForElement(Bys.ActivityMainPage.DetailsTabUnPublishBtn, ElementCriteria.IsVisible); return(null); } } if (Browser.Exists(Bys.ActivityMainPage.DetailsTabSavebtn)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == DetailsTabSavebtn.GetAttribute("outerHTML")) { DetailsTabSavebtn.Click(); // ToDo: Need to add some type of wait criteria here. A test failed in firefox once so far because a 1 second wait wasnt long enough Thread.Sleep(2500); return(null); } } if (Browser.Exists(Bys.ActivityMainPage.EditPortalFormSaveBtn)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == EditPortalFormSaveBtn.GetAttribute("outerHTML")) { EditPortalFormSaveBtn.Click(); this.WaitUntil(Criteria.ActivityMainPage.EditPortalFormCustomFeeTxtNotVisible); return(null); } } else { throw new Exception("No button or link was found with your passed parameter. You either need to add this button to a new If statement, " + "or if the button is already added, then the page you were on did not contain the button."); } return(null); }
protected void Page_Load(object sender, EventArgs e) { Master.SelectedTab = tabID.tabLogbook; if (!IsPostBack) { try { if (Request.PathInfo.Length > 0) { try { CurrentFlightID = Convert.ToInt32(Request.PathInfo.Substring(1), CultureInfo.InvariantCulture); } catch (FormatException) { CurrentFlightID = LogbookEntry.idFlightNone; } } if (CurrentFlightID == LogbookEntry.idFlightNone) { throw new MyFlightbookException("No valid ID passed"); } string szFQParam = util.GetStringParam(Request, "fq"); if (!String.IsNullOrEmpty(szFQParam)) { try { Restriction = FlightQuery.FromBase64CompressedJSON(szFQParam); Restriction.Refresh(); } catch (ArgumentNullException) { } catch (FormatException) { } catch (JsonSerializationException) { } catch (JsonException) { } } DetailsTab dtRequested = DetailsTab.Flight; if (Enum.TryParse <DetailsTab>(util.GetStringParam(Request, "tabID"), out dtRequested)) { int iTab = (int)dtRequested; if (AccordionCtrl.Panes[iTab].Visible) { AccordionCtrl.SelectedIndex = iTab; } } LogbookEntryDisplay led = CurrentFlight = LoadFlight(CurrentFlightID); SetUpChart(TelemetryData); UpdateChart(); UpdateRestriction(); if (Viewer.CloudAhoyToken == null || Viewer.CloudAhoyToken.AccessToken == null) { lnkSendCloudAhoy.Visible = false; } lblOriginalFormat.Text = DataSourceType.DataSourceTypeFromFileType(led.Telemetry.TelemetryType).DisplayName; // allow selection of units if units are not implicitly known. switch (led.Telemetry.TelemetryType) { case DataSourceType.FileType.GPX: case DataSourceType.FileType.KML: case DataSourceType.FileType.NMEA: case DataSourceType.FileType.IGC: cmbAltUnits.Enabled = cmbSpeedUnits.Enabled = false; break; default: cmbAltUnits.Enabled = cmbSpeedUnits.Enabled = true; break; } // Bind details - this will bind everything else. fmvLE.DataSource = new LogbookEntryDisplay[] { led }; fmvLE.DataBind(); // shouldn't happen but sometimes does: GetUserAircraftByID returns null. Not quite sure why. Aircraft ac = (new UserAircraft(led.User).GetUserAircraftByID(led.AircraftID)) ?? new Aircraft(led.AircraftID); fmvAircraft.DataSource = new Aircraft[] { ac }; fmvAircraft.DataBind(); if (String.IsNullOrEmpty(CurrentFlight.FlightData) && dtRequested != DetailsTab.Aircraft && dtRequested != DetailsTab.Flight) { AccordionCtrl.SelectedIndex = (int)DetailsTab.Flight; } } catch (MyFlightbookException ex) { lblPageErr.Text = ex.Message; AccordionCtrl.Visible = mfbGoogleMapManager1.Visible = pnlMap.Visible = pnlAccordionMenuContainer.Visible = pnlFlightDesc.Visible = false; return; } // for debugging, have a download option that skips all the rest if (util.GetIntParam(Request, "d", 0) != 0 && !String.IsNullOrEmpty(CurrentFlight.FlightData)) { Response.Clear(); Response.ContentType = "application/octet-stream"; // Give it a name that is the brand name, user's name, and date. Convert spaces to dashes, and then strip out ANYTHING that is not alphanumeric or a dash. string szFilename = String.Format(CultureInfo.InvariantCulture, "Data{0}-{1}-{2}", Branding.CurrentBrand.AppName, MyFlightbook.Profile.GetUser(Page.User.Identity.Name).UserFullName, DateTime.Now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)).Replace(" ", "-"); string szDisposition = String.Format(CultureInfo.InvariantCulture, "inline;filename={0}.csv", System.Text.RegularExpressions.Regex.Replace(szFilename, "[^0-9a-zA-Z-]", "")); Response.AddHeader("Content-Disposition", szDisposition); Response.Write(CurrentFlight.FlightData); Response.End(); return; } } else { m_fd.Data = TelemetryData; UpdateChart(); } if (Restriction != null && !Restriction.IsDefault) { mfbFlightContextMenu.EditTargetFormatString = mfbFlightContextMenu.EditTargetFormatString + "?fq=" + HttpUtility.UrlEncode(Restriction.ToBase64CompressedJSONString()); } mfbFlightContextMenu.Flight = CurrentFlight; cmbAltUnits.SelectedValue = ((int)m_fd.AltitudeUnits).ToString(CultureInfo.InvariantCulture); cmbSpeedUnits.SelectedValue = ((int)m_fd.SpeedUnits).ToString(CultureInfo.InvariantCulture); if (!m_fd.HasDateTime) { lnkSendCloudAhoy.Visible = false; } // Set up any maps. mfbGoogleMapManager1.Map.Airports = RoutesList.Result; mfbGoogleMapManager1.ShowMarkers = true; mfbGoogleMapManager1.Map.PathVarName = PathLatLongArrayID; mfbGoogleMapManager1.Map.Path = m_fd.GetPath(); if (m_fd.HasLatLongInfo && m_fd.Data.Rows.Count > 1) { cmbFormat.Items[(int)DownloadFormat.KML].Enabled = true; cmbFormat.Items[(int)DownloadFormat.GPX].Enabled = true; mfbGoogleMapManager1.Mode = MyFlightbook.Mapping.GMap_Mode.Dynamic; pnlMapControls.Visible = true; } else { cmbFormat.Items[(int)DownloadFormat.KML].Enabled = false; cmbFormat.Items[(int)DownloadFormat.GPX].Enabled = false; mfbGoogleMapManager1.Mode = MyFlightbook.Mapping.GMap_Mode.Static; pnlMapControls.Visible = false; } lnkZoomToFit.NavigateUrl = mfbGoogleMapManager1.ZoomToFitScript; }
protected static bool TabIndexRequiresFlightData(int iTab) { DetailsTab dt = (DetailsTab)iTab; return(dt != DetailsTab.Flight && dt != DetailsTab.Aircraft); }
protected void Page_Load(object sender, EventArgs e) { Master.SelectedTab = tabID.tabLogbook; Master.Layout = MasterPage.LayoutMode.Accordion; if (!IsPostBack) { try { if (Request.PathInfo.Length > 0) { try { CurrentFlightID = Convert.ToInt32(Request.PathInfo.Substring(1), CultureInfo.InvariantCulture); } catch (FormatException) { CurrentFlightID = LogbookEntry.idFlightNone; } } if (CurrentFlightID == LogbookEntry.idFlightNone) { throw new MyFlightbookException("No valid ID passed"); } string szFQParam = util.GetStringParam(Request, "fq"); if (!String.IsNullOrEmpty(szFQParam)) { try { Restriction = FlightQuery.FromBase64CompressedJSON(szFQParam); Restriction.Refresh(); } catch (ArgumentNullException) { } catch (FormatException) { } catch (JsonSerializationException) { } catch (JsonException) { } } DetailsTab dtRequested = DetailsTab.Flight; if (Enum.TryParse <DetailsTab>(util.GetStringParam(Request, "tabID"), out dtRequested)) { int iTab = (int)dtRequested; if (AccordionCtrl.Panes[iTab].Visible) { AccordionCtrl.SelectedIndex = iTab; } } LogbookEntryDisplay led = CurrentFlight = LoadFlight(CurrentFlightID); SetUpChart(TelemetryData); UpdateChart(); UpdateRestriction(); // Bind details - this will bind everything else. fmvLE.DataSource = new LogbookEntryDisplay[] { led }; fmvLE.DataBind(); fmvAircraft.DataSource = new Aircraft[] { new UserAircraft(led.User).GetUserAircraftByID(led.AircraftID) }; fmvAircraft.DataBind(); if (String.IsNullOrEmpty(CurrentFlight.FlightData) && dtRequested != DetailsTab.Aircraft && dtRequested != DetailsTab.Flight) { AccordionCtrl.SelectedIndex = (int)DetailsTab.Flight; } } catch (MyFlightbookException ex) { lblPageErr.Text = ex.Message; AccordionCtrl.Visible = mfbGoogleMapManager1.Visible = pnlMap.Visible = pnlAccordionMenuContainer.Visible = pnlFlightDesc.Visible = false; return; } // for debugging, have a download option that skips all the rest if (util.GetIntParam(Request, "d", 0) != 0 && !String.IsNullOrEmpty(CurrentFlight.FlightData)) { Response.Clear(); Response.ContentType = "application/octet-stream"; // Give it a name that is the brand name, user's name, and date. Convert spaces to dashes, and then strip out ANYTHING that is not alphanumeric or a dash. string szFilename = String.Format(CultureInfo.InvariantCulture, "Data{0}-{1}-{2}", Branding.CurrentBrand.AppName, MyFlightbook.Profile.GetUser(Page.User.Identity.Name).UserFullName, DateTime.Now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)).Replace(" ", "-"); string szDisposition = String.Format(CultureInfo.InvariantCulture, "inline;filename={0}.csv", System.Text.RegularExpressions.Regex.Replace(szFilename, "[^0-9a-zA-Z-]", "")); Response.AddHeader("Content-Disposition", szDisposition); Response.Write(CurrentFlight.FlightData); Response.End(); return; } } else { m_fd.Data = TelemetryData; UpdateChart(); } // Set up any maps. mfbGoogleMapManager1.Map.Airports = RoutesList.Result; mfbGoogleMapManager1.ShowMarkers = true; mfbGoogleMapManager1.Map.PathVarName = PathLatLongArrayID; mfbGoogleMapManager1.Map.Path = m_fd.GetPath(); if (m_fd.HasLatLongInfo && m_fd.Data.Rows.Count > 1) { cmbFormat.Items[(int)DownloadFormat.KML].Enabled = true; cmbFormat.Items[(int)DownloadFormat.GPX].Enabled = true; } else { cmbFormat.Items[(int)DownloadFormat.KML].Enabled = false; cmbFormat.Items[(int)DownloadFormat.GPX].Enabled = false; } lnkZoomToFit.NavigateUrl = mfbGoogleMapManager1.ZoomToFitScript; }
/// <summary> /// Clicks the user-specified element and then waits for a window to close or open, or an element to be visible or enabled /// </summary> /// <param name="buttonOrLinkElem">The element to click on</param> public dynamic ClickAndWait(IWebElement buttonOrLinkElem) { if (Browser.Exists(Bys.ProgramPage.SelfReportActTab)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == SelfReportActTab.GetAttribute("outerHTML")) { ElemSet.ClickAfterScroll(Browser, buttonOrLinkElem); this.WaitUntil(Criteria.ProgramPage.SelfReportActTabValidActivityTblBodyVisible); return(null); } } if (Browser.Exists(Bys.ProgramPage.ProgramAdjustmentsTab)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == ProgramAdjustmentsTab.GetAttribute("outerHTML")) { buttonOrLinkElem.Click(); this.WaitUntil(Criteria.ProgramPage.ProgramAdjustmentsActivityTblBodyRowVisible); return(null); } } if (Browser.Exists(Bys.ProgramPage.DetailsTab)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == DetailsTab.GetAttribute("outerHTML")) { buttonOrLinkElem.Click(); this.WaitUntil(Criteria.ProgramPage.DetailsTabStatusValueLblVisible); return(null); } } if (Browser.Exists(Bys.ProgramPage.ProgAdjustTabAddAdjustLnk)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == ProgAdjustTabAddAdjustLnk.GetAttribute("outerHTML")) { buttonOrLinkElem.Click(); this.WaitUntil(Criteria.ProgramPage.ProgAdjustTabAddAdjustFormAdjustCodeSelElemVisible); return(null); } } if (Browser.Exists(Bys.ProgramPage.ProgAdjustTabAddAdjustFormAddAdjustBtn)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == ProgAdjustTabAddAdjustFormAddAdjustBtn.GetAttribute("outerHTML")) { buttonOrLinkElem.Click(); this.WaitUntilAll(TimeSpan.FromSeconds(120), Criteria.ProgramPage.ProgAdjustTabAddAdjustFormNotExists, Criteria.ProgramPage.AdjustmentAddedBannerNotExists); // Adding a little sleep here. For some reason, whenever the code proceeds after clicking this button, the next line of code doesnt execute. // For example, Navigate.GoToLoginPage. That code gets past the navigation part, but if you view the test in progress, no URL is entered into // the URL. Another example I have code to click on the "Sites" tab in LTS after this, and the code goes past the Click line, but if you view // the test, it didnt click anything. I have never seen this before. So far, I think it only happened in Debug mode. // Monitor going forward Thread.Sleep(0600); return(null); } } if (Browser.Exists(Bys.ProgramPage.CreditValidationSubmitBtn)) { if (buttonOrLinkElem.GetAttribute("outerHTML") == CreditValidationSubmitBtn.GetAttribute("outerHTML")) { buttonOrLinkElem.Click(); this.WaitUntil(Criteria.ProgramPage.SelfReportActTabValidActivityTblBodyVisible); Thread.Sleep(0500); return(null); } } else { throw new Exception("No button or link was found with your passed parameter. You either need to add this button to a new If statement, or if the button is already added, then the page you were on did not contain the button."); } return(null); }