Vinnaren i pepparkakshustävlingen!
2023-04-12, 13:56
  #1
Medlem
Kottkompotts avatar
Har för nuvarande ett program skrivet i C# som funkar bra om man har en "vanlig" dator.
Dock insåg jag att vissa användare helt enkelt inte har excel (som bara används för att visa rader och kolumner från en databas), plus att interop verkar strula på ångmaskinerna som en del kör.
Så jag tänkte försöka byta ut det hela till en webbapp istället.

Dock är jag jätteny på webbutveckling.
Jag har en statisk hemsida som mest är ett hopklipp från en mall, jag har gjort ett PHP-program på några hundra rader, och har petat ytterst lite i javascript i en universitetskurs.
Men där tar det slut, och jag vet inte riktigt vad som behövs för olika saker.

Just nu är det så att datan som visas i excel i sin tur används i en seleniuminstans, och klipper in datan i olika rutor kors och tvärs.
Och jag skulle gärna fortsätta använda selenium, om det inte antingen är jättebökigt med javascript (typ kräver en lite teknisk lokal installation ändå), eller går att automatisera allt det där med endast bas-javascript.

Tanken är att man ska gå in på hemsidan och logga in, och data ska hämtas från en databas och visas i den fliken, tillsammans med lite knappar och jox.
Men de knapparna ska kunna öppna nya flikar och starta en automatisering där en annan tredjepartssida navigeras automatiskt.
Det är egentligen bara klicka på knappar, mata in text, hämta text från element efter xpath (och klistra in dessa i element i andra flikar) och vänta på att element är synliga som behövs automatiseras i dessa övriga flikar. Skulle vara stort plus om det går att automatisera andra flikar utan att de görs aktiva, men är inget jättemåste.

Går det göra sådant med endast javascript?
Om inte, finns det något annat jag kan använda som inte kräver en lokal installation, och om möjligt är OS- och webbläsaragnostiskt?
För visst kräver selenium en lokal installation och en viss webbläsare ändå?
Kan man kanske använda typ tampermonkey eller något för det?

Om det kräver en specifik webläsare (gärna chrome) och att användarna laddar ner en plugin utan mycket bök är det gott nog, bara det funkar på både windows och mac.

Edit:
Jag har funderat på alternativet att köra C# ändå (vilket skulle vara en stor fördel då det ger vissa friheter, plus att jag vill fortsätta utvecklas inom det språket), och istället använda det för att skjuta in javascript i en seleniumöppnad flik.
Men jag vet inte riktigt hur bökigt det är att kontrollera C# med den fliken då.
Jag har en preliminär idé om hur man kan göra väldigt enkla events på knapparna och loopa C#-koden för att kolla efter dessa events med selenium (har gjort något liknande i en uppgift med windows forms på komvux). Och jag tror det är en aningen enklare process än andra alternativ.
Men jag är inte riktigt säker.
__________________
Senast redigerad av Kottkompott 2023-04-12 kl. 14:48.
Citera
2023-04-12, 18:39
  #2
Medlem
Kottkompotts avatar
Insåg nu att jag kunde försökt mig på asp.net, men försökte det förut (dock innan ChatGPT), och det kändes ungefär lika intuitivt som att gå på vatten.
Lite osäker på hur jag ska klämma in det i ett Web fönster öppnat av selenium också, men det kanske inte är någon konst egentligen.

Om det av alla tänkbara orsaker är en bättre ide med det, än att skohorna in selenium i något det inte är gjort för, så får någon gärna varna mig.
Citera
2023-04-12, 19:25
  #3
Medlem
Enterprises avatar
Lite svårt att hänga med i svängarna här.
Är det inte två olika saker som du pratar om:
1. Datainsamling - detta kan ske på en enda dator med scraping genom Selenium som sparar insamlade data i en databas som är publikt (för de som har auth) tillgänglig genom enkelt API. Databasen måste inte ligga i samma dator som Selenium körs på, utan kan ligga i molnet eller dedikerad webbserver.

2. Datapresentation - detta kan egentligen ske hur som helst på klientsidan (även i Excel ), men ett enkelt sett är att göra en hemsida som laddar ned data från databasen. Antingen görs hemsidan dynamiskt på serversidan, eller så gör du en Single Page Application på klientsidan i Javacsript som laddar data från databasen genom API-anrop (genom AJAX). Ett annat sätt är att du gör en C#-applikation som kopplar upp sig mot API:n, även om det då innebär att användaren måste installera denna applikation på sin dator, vilket är krångligare än en hemsida.

PS! Du kommer aldrig kunna använda Javascript på klientsidan för att flytta data mellan olika flikar i Webbläsaren. Detta går på nåder med Tampermonkey men inte med vanlig Javascript (av säkerhetsskäl).
__________________
Senast redigerad av Enterprise 2023-04-12 kl. 19:35.
Citera
2023-04-12, 21:02
  #4
Medlem
Kottkompotts avatar
Citat:
Ursprungligen postat av Enterprise
Lite svårt att hänga med i svängarna här.
Är det inte två olika saker som du pratar om:
1. Datainsamling - detta kan ske på en enda dator med scraping genom Selenium som sparar insamlade data i en databas som är publikt (för de som har auth) tillgänglig genom enkelt API. Databasen måste inte ligga i samma dator som Selenium körs på, utan kan ligga i molnet eller dedikerad webbserver.

2. Datapresentation - detta kan egentligen ske hur som helst på klientsidan (även i Excel ), men ett enkelt sett är att göra en hemsida som laddar ned data från databasen. Antingen görs hemsidan dynamiskt på serversidan, eller så gör du en Single Page Application på klientsidan i Javacsript som laddar data från databasen genom API-anrop (genom AJAX). Ett annat sätt är att du gör en C#-applikation som kopplar upp sig mot API:n, även om det då innebär att användaren måste installera denna applikation på sin dator, vilket är krångligare än en hemsida.

PS! Du kommer aldrig kunna använda Javascript på klientsidan för att flytta data mellan olika flikar i Webbläsaren. Detta går på nåder med Tampermonkey men inte med vanlig Javascript (av säkerhetsskäl).
Ja det är två olika saker, men det var mest för att befästa lite poängen att det behöver ändå var ett webbfönster öppet som selenium pysslar med (eftersom datan som dyker upp där ska visas i realtid för användare, men även halvautomatisera några sidor som kräver handlag).
Och ja, excel var det ju. En koppling som en klok person för länge sedan tipsade mig om, i ett annat liv.
Men som en klok person också sade, webscraping och excel går bara dra till en viss gräns

Frågan var mest hur jag skulle kontrollera C# med ett UI som låg i ett webläsarfönster. Prio var att det var ett webbläsarfönster som redan kontrollerades av selenium, så man slapp ha två webbläsarfönster öppna.
Men det löste sig, började pyssla lite med att göra väldigt manuella events med JS/Selenium, som sedan C#/Selenium läser av i en loop för att exekvera olika funktioner i C#.
Funkade precis så smidigt som jag föreställde mig.
Fördelen är att jag nu kan behålla C# lite som en central för allt hantering, vilket är skönt då jag bara behöver klippa i programmet lite för att passa in till olika events.

Är det någon form av helgerån att använda selenium på det här sättet?
__________________
Senast redigerad av Kottkompott 2023-04-12 kl. 21:06.
Citera
2023-04-12, 21:10
  #5
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Kottkompott
Är det någon form av helgerån att använda selenium på det här sättet?
Finns egentligen inga helgerån i min värld. Men förstår jag dig rätt att varje användare kör Selenium i bakgrunden, eller kör du en centraliserad Selenium-installation som scrapar datan till de övriga?

Problemet med att alla användare sitter och kör Selenium, förutom att det inte är helt enkelt att installera för den som inte är insatt, är enligt min erfarenhet att Selenium är känsligt för vilken version av browsern som man kör och browsern tenderar att uppdateras rätt ofta. Detta är givetvis ett smärre problem också om man enbart kör en Selenium-installation, men om man har ett helt arbetslag som var och en sitter och kör Selenium, så känns det som att be om problem.
Citera
2023-04-12, 21:14
  #6
Medlem
Kottkompotts avatar
Citat:
Ursprungligen postat av Enterprise
Finns egentligen inga helgerån i min värld. Men förstår jag dig rätt att varje användare kör Selenium i bakgrunden, eller kör du en centraliserad Selenium-installation som scrapar datan till de övriga?

Problemet med att alla användare sitter och kör Selenium, förutom att det inte är helt enkelt att installera för den som inte är insatt, är enligt min erfarenhet att Selenium är känsligt för vilken version av browsern som man kör och browsern tenderar att uppdateras rätt ofta. Detta är givetvis ett smärre problem också om man enbart kör en Selenium-installation, men om man har ett helt arbetslag som var och en sitter och kör Selenium, så känns det som att be om problem.
Nej selenium behöver inte ens installeras, det gick tydligen baka in i releasen av C#-programmet, som är helt portabel och bara kräver att chrome är installerat.
Just den funktionen verkar fungera även på de gamla ångvältarna, som jag misstänker kör windows XP. Att köra selenium har inte krånglat på någon dator än så länge, av typ 5 vitt skilda windows och macdatorer som det testats på.

Funderar på att lösa just det där med browserversionen genom att jag bakar in en git pull och får hålla mig ajour med nyaste browserutgåvorna.
Chefen gillar när man kan centralisera grejer på det sättet.
Men just att selenium körs lokalt var lite viktigt då det vid flera instanser kan bli så många förfrågningar att det blir stopp om allt kommer från samma server, och återigen, chefen sparar gärna några kronor, så någon proxy blir det inte i onödan.
__________________
Senast redigerad av Kottkompott 2023-04-12 kl. 21:16.
Citera
2023-04-12, 21:19
  #7
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Kottkompott
Nej selenium behöver inte ens installeras, det gick tydligen baka in i releasen av C#-programmet, som är helt portabel och bara kräver att chrome är installerat.
Just den funktionen verkar fungera även på de gamla ångvältarna, som jag misstänker kör windows XP. Att köra selenium har inte krånglat på någon dator än så länge, av typ 5 vitt skilda windows och macdatorer som det testats på.

Funderar på att lösa just det där med browserversionen genom att jag bakar in en git pull och får hålla mig ajour med nyaste browserutgåvorna.
Chefen gillar när man kan centralisera grejer på det sättet.
Men just att selenium körs lokalt var lite viktigt då det vid flera instanser kan bli så många förfrågningar att det blir stopp om allt kommer från samma server, och återigen, chefen sparar gärna några kronor, så någon proxy blir det inte i onödan.
Låter bra. Fördelen med en hemsida är att den är enklare att uppdatera för alla användare samtidigt, men varför gå över ån för att hämta vatten, när du uppenbarligen kan C# tillräckligt bra för att få det att funka.
Citera
2023-04-12, 21:27
  #8
Medlem
Kottkompotts avatar
Citat:
Ursprungligen postat av Enterprise
Låter bra. Fördelen med en hemsida är att den är enklare att uppdatera för alla användare samtidigt, men varför gå över ån för att hämta vatten, när du uppenbarligen kan C# tillräckligt bra för att få det att funka.
Mja, det hade varit stora fördelar i en hemsida från grunden.
Men då finns det två problem:

1. Jag vet inte hur inlåst vår webbserver är på att köra bara vissa grejer.
Som databas kan den t.ex. bara göra MariaDB. Det funkar visserligen till mycket, men det var någon grej jag stötte på rätt tidigt som inte gick. Hade något med hanteringen av duplicerade rader att göra.
Kan finnas fler begränsningar i allmänhet på webbservern också.

2. Jag fick inte rätsida på hur jag hade kunnat automatisera hela webbläsaren genom information som skickas från en onlinesida.
Citera
2023-04-13, 07:15
  #9
Medlem
PalmeKillers avatar
1) Kan du väl läsa gemom att köra det i en VPS, där du själv bestämmer utformningen.

Citat:
Ursprungligen postat av Kottkompott
Mja, det hade varit stora fördelar i en hemsida från grunden.
Men då finns det två problem:

1. Jag vet inte hur inlåst vår webbserver är på att köra bara vissa grejer.
Som databas kan den t.ex. bara göra MariaDB. Det funkar visserligen till mycket, men det var någon grej jag stötte på rätt tidigt som inte gick. Hade något med hanteringen av duplicerade rader att göra.
Kan finnas fler begränsningar i allmänhet på webbservern också.

2. Jag fick inte rätsida på hur jag hade kunnat automatisera hela webbläsaren genom information som skickas från en onlinesida.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback