Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Guzik w webbrowserze


Rekomendowane odpowiedzi

Opublikowano

chciał bym aby po naciśnięciu guzika w webbrowserze likowalo film który tam jest kod od guzika typu class

 

<button class="yt-uix-button yt-uix-button-size-default yt-uix-button-opacity yt-uix-button-has-icon no-icon-markup like-button-renderer-like-button like-button-renderer-like-button-clicked yt-uix-button-toggled yt-uix-post-anchor yt-uix-tooltip" type="button" onclick=";return false;" aria-label="ten film podoba się mnie i jeszcze 1 343 innym osobom" title="Już mi się nie podoba" data-position="bottomright" data-force-position="true" data-post-data="se=8pH38AERCAISDQoLMVc4UktpM1AxUms%3D&itct=CC8QpUEiEwiLxrXykYjPAhWPMg0KHWspCNco-B0" data-orientation="vertical" data-post-action="/service_ajax" data-tooltip-text="Już mi się nie podoba" aria-labelledby="yt-uix-tooltip735-arialabel"><span>1 381</span></button>

 

 

bede wdzieczy za pomoc

Opublikowano
HtmlElementCollection classButton = webBrowser1.Document.All;

foreach (HtmlElement element in classButton)

{

if (element.GetAttribute("className") == "yt-uix-button")

{

element.InvokeMember("click");

}

}

Cos takiego ?

Opublikowano
HtmlElementCollection classButton = webBrowser1.Document.All;

foreach (HtmlElement element in classButton)

{

if (element.GetAttribute("className") == "yt-uix-button")

{

element.InvokeMember("click");

}

}

Cos takiego ?

 

coś ala to tylko dodaje button1 i jak go klikne to film sie polubi

jak coś to ten kod nie działa nie likuje

Opublikowano

a youtube nie ma przypadkiem jakiegoś API od tego ?

nwm chciał bym to przez c# buttonem chciał w webbrowszerze clickać i łapke w górę i łapkę w dół 

Opublikowano

YouTube ma swoje API po .NET, wystarczy chwilę poszukać.

 

https://developers.google.com/youtube/2.0/developers_guide_dotnet

 

Tam na pewno jest coś do obsługi like.

Obrazki,jakieś "dowartościowujące" cytaty,na kij to komu? Ja wole sam napis,który widnieje tu,w dole

 

Popatrzyłeś sobie? Szczęśliwy? Jeśli to czytałeś,wiedz,że zmarnowałeś kilka sekund/minut z życia ^^ Dziękuję za uwagę

 

Nick na serwerach: ExTeuS/FilozoF

 

Objawia się złośliwość i głupota ludzka...piszesz że chcesz +,dają all - ,a jak chcesz - ,dają all +...jak łatwo można na tym zyskać ^^ A że i tak nikt sprawiedliwie plus/minus nie daje,to powiem wam coś...prawda boli! A ja mówię bolesną prawdę,prosze bardzo,nawalajcie oceną jaką chcecie,wali mnie to! ;]

Opublikowano

Spróbuj użyć pierwszego kodu, tylko dając pełna nazwę class buttona

próbowałem i nic jak ci się chce to zobacz jak na yt to jest w zbadaj elemencie zrobione

Opublikowano

Na twoim miejscu skorzystałbym z narzędzi do tego odpowiednich. Albo Youtube API (o ile mają dokumentację do dawania łapek filmom), albo czymś gdzie posłużysz się xPath.

        private void PageWaiter(object sender, EventArgs e)
        {
            if (geckoWebBrowser1.IsBusy == false)
            {
                pageready = true;
                geckoWebBrowser1.DocumentCompleted -= new EventHandler(PageWaiter);
            }

        }

        private bool pageready { get; set; }

        public void WaitForPageLoad()
        {
            geckoWebBrowser1.DocumentCompleted += new EventHandler(PageWaiter);
            while (!pageready)
            {
                Application.DoEvents();
            }
            pageready = false;
            DelayAction(5000, new Action(() => { sendLike(); }));
        }

        public void sendLike()
        {
            GeckoHtmlElement[] click_register_mail = geckoWebBrowser1.Document.GetElements(".//*[@id='watch8-sentiment-actions']/span/span[1]/button").ToArray();
            click_register_mail[0].Click();
        }

        public static void DelayAction(int millisecond, Action action)
        {
            var timer = new DispatcherTimer();
            timer.Tick += delegate

            {
                action.Invoke();
                timer.Stop();
            };

            timer.Interval = TimeSpan.FromMilliseconds(millisecond);
            timer.Start();
        }

        private void navigate_Click(object sender, EventArgs e)
        {
            geckoWebBrowser1.Navigate("https://www.youtube.com/watch?v=xCsvDz761Ho");
            WaitForPageLoad();
        }

W/w kod złapkuje film 5 sekund po załadowaniu strony.

953c57246b.gif

 

 

NUnit WebDriver też daje radę.

    [TestFixture]
    public class Untitled
    {
        private IWebDriver driver;
        private StringBuilder verificationErrors;
        private string baseURL;
        private bool acceptNextAlert = true;
        
        [SetUp]
        public void SetupTest()
        {
            driver = new FirefoxDriver();
            baseURL = "https://www.youtube.com/";
            verificationErrors = new StringBuilder();
        }
        
        [TearDown]
        public void TeardownTest()
        {
            try
            {
                driver.Quit();
            }
            catch (Exception)
            {
                // Ignore errors if unable to close the browser
            }
            Assert.AreEqual("", verificationErrors.ToString());
        }
        
        [Test]
        public void TheUntitledTest()
        {
            driver.Navigate().GoToUrl("https://www.youtube.com/watch?v=zZNOuddwnO8");
            driver.FindElement(By.XPath("(//*[@id='watch8-sentiment-actions']/span/span[1]/button)")).Click();
        }
        private bool IsElementPresent(By by)
        {
            try
            {
                driver.FindElement(by);
                return true;
            }
            catch (NoSuchElementException)
            {
                return false;
            }
        }
        
        private bool IsAlertPresent()
        {
            try
            {
                driver.SwitchTo().Alert();
                return true;
            }
            catch (NoAlertPresentException)
            {
                return false;
            }
        }
        
        private string CloseAlertAndGetItsText() {
            try {
                IAlert alert = driver.SwitchTo().Alert();
                string alertText = alert.Text;
                if (acceptNextAlert) {
                    alert.Accept();
                } else {
                    alert.Dismiss();
                }
                return alertText;
            } finally {
                acceptNextAlert = true;
            }
        }
    }
Opublikowano

 

Na twoim miejscu skorzystałbym z narzędzi do tego odpowiednich. Albo Youtube API (o ile mają dokumentację do dawania łapek filmom), albo czymś gdzie posłużysz się xPath.

        private void PageWaiter(object sender, EventArgs e)
        {
            if (geckoWebBrowser1.IsBusy == false)
            {
                pageready = true;
                geckoWebBrowser1.DocumentCompleted -= new EventHandler(PageWaiter);
            }

        }

        private bool pageready { get; set; }

        public void WaitForPageLoad()
        {
            geckoWebBrowser1.DocumentCompleted += new EventHandler(PageWaiter);
            while (!pageready)
            {
                Application.DoEvents();
            }
            pageready = false;
            DelayAction(5000, new Action(() => { sendLike(); }));
        }

        public void sendLike()
        {
            GeckoHtmlElement[] click_register_mail = geckoWebBrowser1.Document.GetElements(".//*[@id='watch8-sentiment-actions']/span/span[1]/button").ToArray();
            click_register_mail[0].Click();
        }

        public static void DelayAction(int millisecond, Action action)
        {
            var timer = new DispatcherTimer();
            timer.Tick += delegate

            {
                action.Invoke();
                timer.Stop();
            };

            timer.Interval = TimeSpan.FromMilliseconds(millisecond);
            timer.Start();
        }

        private void navigate_Click(object sender, EventArgs e)
        {
            geckoWebBrowser1.Navigate("https://www.youtube.com/watch?v=xCsvDz761Ho");
            WaitForPageLoad();
        }

W/w kod złapkuje film 5 sekund po załadowaniu strony.

953c57246b.gif

 

 

NUnit WebDriver też daje radę.

    [TestFixture]
    public class Untitled
    {
        private IWebDriver driver;
        private StringBuilder verificationErrors;
        private string baseURL;
        private bool acceptNextAlert = true;
        
        [SetUp]
        public void SetupTest()
        {
            driver = new FirefoxDriver();
            baseURL = "https://www.youtube.com/";
            verificationErrors = new StringBuilder();
        }
        
        [TearDown]
        public void TeardownTest()
        {
            try
            {
                driver.Quit();
            }
            catch (Exception)
            {
                // Ignore errors if unable to close the browser
            }
            Assert.AreEqual("", verificationErrors.ToString());
        }
        
        [Test]
        public void TheUntitledTest()
        {
            driver.Navigate().GoToUrl("https://www.youtube.com/watch?v=zZNOuddwnO8");
            driver.FindElement(By.XPath("(//*[@id='watch8-sentiment-actions']/span/span[1]/button)")).Click();
        }
        private bool IsElementPresent(By by)
        {
            try
            {
                driver.FindElement(by);
                return true;
            }
            catch (NoSuchElementException)
            {
                return false;
            }
        }
        
        private bool IsAlertPresent()
        {
            try
            {
                driver.SwitchTo().Alert();
                return true;
            }
            catch (NoAlertPresentException)
            {
                return false;
            }
        }
        
        private string CloseAlertAndGetItsText() {
            try {
                IAlert alert = driver.SwitchTo().Alert();
                string alertText = alert.Text;
                if (acceptNextAlert) {
                    alert.Accept();
                } else {
                    alert.Dismiss();
                }
                return alertText;
            } finally {
                acceptNextAlert = true;
            }
        }
    }

GeckoHtmlElement coto jest?

wysypało errory na :

 

GeckoHtmlElement[]

GetElements

Opublikowano

 

 

Prosz..

 

polskie gówno

 

 

Ojoj :D
 
Gdybyś nie był taką pijawką proszącą o pomoc już dawno byś znalazł rozwiązanie. Nawet jeśli wysłałbym ci cały projekt, to pewnie też nie potrafiłbyś zainstalować pakietu instalacyjnego Xulrunner co pewnie kończyło by się kolejnymi żałosnymi prośbami.
 
Moja pomoc w tym wątku kończy się w tym miejscu. Radź se sam :)
Opublikowano

Dodaj sobie to do buttona 

 var clasa = webBrowser1.Document.GetElementsByTagName("button");
            foreach (HtmlElement likeButton in clasa)
            {
                if (likeButton.GetAttribute("title") == "To mi się podoba" )
                {
                    likeButton.InvokeMember("Click");
                }
            }

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...