Kategorier
Övrigt

Lars Thunberg

This is the homepage of Lars Thunberg in Sollentuna, Sweden. Amateur radio callsign SM0TGU e-mail lars(at)larsthunberg.se
For information about my satellites and amateur radio activity please see this page where most of the info are in english. Also see all the posts about amateur radio or use the web page search .

My linkedin page is http://www.linkedin.com/pub/lars-thunberg/1/442/769


Domänen larsthunberg.se ägs av Lars Thunberg, Sollentuna. Kontakt via e-mail   lars(snabel-a)larsthunberg.se

Om du letar efter ”rätt” Lars Thunberg kan jag nämna att födelseort är Mellösa utanför Flen och födelseår 1972.

För arbetsrelaterade kontakter hänvisar jag till LinkedIn:
http://www.linkedin.com/pub/lars-thunberg/1/442/769

Kategorier
Amateur Radio

12h of WSPR with Skyloop antenna

Results from a 12 hour WSPR night test with new 80 meter Skyloop antenna. Transmitter Zachtek Desktop 200 mWatt. 336 unique spotters on 80, 40, 20 and 15 meter band.

Test started 17.00 UTC and ended 05.00 UTC.

80 meter band (3.5 MHz)
40 meter band (7 MHz)
20 meter band (14 MHz)
15 meter band (21 MHz)
Kategorier
Test and Q&A

Selenium C# Page Object Model utan PageFactory

PageFactory för Selenium C# har from. version 3.11 utgått. Det har under en övergångsperiod gått att använda med ett tilläggspaket (NuGet) som heter DotNetSeleniumExtras.PageObjects men från version 4 av Selenium stöds inte heller det.

PageFactory anses av flera inom Selenium-community inte vara ett bra stöd i konceptet Page Object Model (POM), även om jag själv inte haft några problem med det. Längst ner i detta inlägg finns några länkar till anledningen bakom att sluta stödja PageFactory, om du vill veta mer.

Vad är då PageFactory? Jo det används för att initiera webbelement i POM-classen och elementen får därför en funktion som liknar cachning. Denna bild från guru99.com visar bra hur man definierar webbelement med PageFactory:

Från guru99.com

Om man vill uppgradera sitt Selenium-projekt till version 4, vilket är bra för att få nya funktioner och eventuella säkerhetspatchar, krävs det att man konverterar @FindBy till FindElement vilket får till följd att webbelementen letas upp under runtime när testet körs. Det är egentligen ganska lätt att konvertera men kan ta lite tid. I det projekt jag jobbar med nu var det ca. 700 webbelement som fick konverteras manuellt, men egentligen utan några större problem.

Om ett element i PageFactory ”hittades” så här:

        [FindsBy(How = How.Id, Using = "account")]
        public IWebElement MyAccount { get; set; }

Så får man konvertera det till:

public IWebElement MyAccount => _driver.FindElement(By.Id("account"));

Och sen får man ta bort initieringen av PageFactory och till slut avinstallera NuGet-paketet DotNetSeleniumExtras.PageObjects.

Det jag upptäckt efter konverteringen är att vissa delar av testerna har varit anpassad för PageFactory och beter sig nu lite annorlunda. Ett exempel är om man vill kolla om ett webbelement finns på sidan (i DOM:en), tex. om en knapp ska synas eller inte. Beroende på vilket front-end ramverk som används kanske elementet bara är ”hidden” eller ”not enabled” men det kan även vara så att det inte finns alls. Just det fallet kan man lösa genom följande:

Skapa en generell metod (här i classen BasePage.cs) som sätter ner tiden (här till 5 sekunder) hur länge Seleniums webdriver ska vänta på ett element är tillgängligt i DOM:en. Om du inte sätter ner tiden får du vänta i den tid som gäller generellt för ImplicitWait, i mitt fall 30 sekunder (timeSpan).
Om elementet sedan är tillgängligt returneras true, annars false eftersom ett NoSuchElement-exception kan kastas och det tas hand om med catch.
Observera att ImplicitWait sätts tillbaka till 30 sekunder när resultatet returneras vilket innebär att resten av testmetoden som exekveras åter har webdrivern med sitt ursprungsvärde.

        public bool IsElementDisplayed(string elementToCheck, int time = 5)
        {           
            Driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(time);
           
            var present = false;
            try
            {
                IWebElement element = Driver.FindElement(By.Id(elementToCheck));
                present = element.Displayed;
            }
            catch (Exception)
            {
                            
               //Set back ImplicitWait to default 
                Driver.Manage().Timeouts().ImplicitWait = timeSpan;
                return present;
            }
            //Set back ImplicitWait to default 
            Driver.Manage().Timeouts().ImplicitWait = timeSpan;
            return present;
        }

Och i din testmetod, anropa metoden med webbelementet som en textsträng. Då får du en snygg assert som du kan hantera som du vill:

Assert.IsTrue(BasePage.IsElementDisplayed("sitelogo"), "Site logo not visible");

Det finns många olika sätt att hantera liknande fall och det aktuella behovet får avgöra hur du väljer att implementera. I mitt projekt var det enklast att göra på detta vis då vi har många tester om element syns (finns) eller inte i DOMen.

Om du överväger att komma bort från PageFactory för att kunna uppgradera till Selenium 4 hoppas jag att du fått lite ideer av mitt inlägg. Till slut kommer här ett antal länkar om du vill läsa mer om bakgrunden till PageFactory och varför den supporten nu upphör.

Lars Thunberg – Q&A-konsult inom testledning, systemtestning och testautomatisering

Kategorier
Amateur Radio

IC-705 IC-9700 scope setup

On YouTube there are several videos about setting up the spectrum scope of the Icom IC-705 and IC-9700. Last in this post I have linked one of these videos and I have actually done every step. It is now much better then the original settings.

I’m using colours like the one in SDR-Console software because that is how I’m used to have it.

The REF adjustment is very good to adjust when needed, to get the best contrast in the scope.

Also adjusting the SPAN to what you would like to see at the moment is a great function.

But, the best improvement for me was to change CENTER Type Display to Carrier Point Center (Abs. Freq.).

Here is the video from Ham Radio DX channel:

Kategorier
Amateur Radio

XT-60 DIY fused power distribution

Very simple home made (DIY) XT-60 power distribution with fuse, used to distribute low power 12V from the banana plugs of the power supply.

Idea from this video:

Kategorier
Amateur Radio

New UHF SatNOGS antenna direction

2021-12-14: Move direction to south

Kategorier
Amateur Radio

WSPR portable tests with HF loop antenna

Did some WSPR portable tests today during my lunch break with OM0ET MC-20 HF loop antenna. WSPR TRX from ZachTek controlled and powered by GPD MicroPC.

87 unique spotters in 12 minutes on 20 meter. Output is 200 mW.

Kategorier
Amateur Radio

FT8 contact with VK on 28 MHz

My first Australian contact on HF was done via FT8 on 28 MHz 2021-10-27 with VK6EI.

10 watt with IC-705 and EFHW 40-10 antenna.