2017-05-13 2 views
0

Im HCL-Interview sie uns fragte, um zu überspringen Sprungknopf der Werbung in youtube mit Selen. kann mir jemand helfen, das zu automatisieren?Wie man auf Überspringen-Taste von youtube in selen

+0

Willkommen bei Stack Overflow. Informationen zum Erstellen eines minimalen, vollständigen und überprüfbaren Codebeispiels in Ihrem Post finden Sie unter [diese Richtlinien] (https://stackoverflow.com/help/mcve). – Toby

+0

Der Player von Youtube verwendet HTML5 sowie alle darüber angezeigten Komponenten. Du brichst die Logik in drei Szenarien auf: 1) Eine Schaltfläche zum Vorüberspringen ist vorhanden, du möchtest warten bis der Status geändert wurde und klicke dann darauf, dass das Video erwartungsgemäß abgespielt wird, indem du den Status des Spielers abfragst. 2) Sie können sofort überspringen, also drücken Sie diese Taste und stellen Sie sicher, dass das Video erwartungsgemäß im Status des Players abgespielt wird. 3) Die Anzeige kann nicht übersprungen werden, so dass Sie eine maximale Zeit warten hardcore oder versuchen Sie und holen Sie aus dem Overlay und stellen Sie die Video-Player wie erwartet. –

Antwort

0

Für Firefox:

from selenium import webdriver 
import threading 
driver = webdriver.Firefox(executable_path="/root/Downloads/geckodriver") 
url="https://www.youtube.com" 
driver.get(url) 

Suche auf Youtube:

youtube_search = driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div/div[3]/form/div/input") 
youtube_search.send_keys("Latest Videos") #Searches for 
#Click Search 
clickButton = driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div/div[3]/form/button") 
clickButton.click() 

assert "No results found." not in driver.page_source 

skipAd = driver.find_element_by_xpath("xpath for next /html/body/div[2]/div[4]/div/div[4]/div[2]/div[2]/div/div[4]/div/div/div[5]/button") 

def skipAdFunction(): 
    threading.Timer(3,skipAdFunction).start() 
    if(skipAd.is_enabled() or skipAd.is_displayed()): 
     skipAd.click() 

skipAdFunction() 

driver.close() 
0

Ich erstelle ein Verfahren skipADD2 Auswahltaste der Werbung in youtube zu automatisieren, Wenn das Video nicht überspringen hat Taste es present löst eine Ausnahme aus, die im ersten catch-Block abgefangen wird, und // Schritt 1: Warten Sie, bis die Seite geladen wird // Schritt 2: Überprüfen Sie die Sichtbarkeit der Überspringen-Schaltfläche, wenn sie falsch ist, dann wird sie in die c gehen atch Block und anmutig das Programm beenden // Schritt: 3 Wenn es wahr ist, dann klicken Operation durchführen auf Sprung ad

public void skipADD2() throws InterruptedException {

Thread.sleep(2000); 
    WebElement videoAdUiPreSkipButton = null; 
    WebElement skipaddbutton = null; 
    log.info(
      "*****************************************Printing Information In The begining ++++++++++++++++++++++++++++"); 
    try { 

     videoAdUiPreSkipButton = driver.findElement(By.xpath("//div[@class='videoAdUiPreSkipButton']")); 
     log.info("*************VISIBILITY OF THE ELEMENT IS ************************* " 
       + videoAdUiPreSkipButton.isDisplayed()); 


    if (videoAdUiPreSkipButton.isDisplayed() == true) { 
     log.info("*************Getting Text from the Pre text Box in the begining************************* " 
       + videoAdUiPreSkipButton.getText()); 

     WebElement videoAdUiPreSkipButtonFirstDiv = driver 
       .findElement(By.xpath("//div[@class='videoAdUiPreSkipButton']//div[1]")); 
     log.info("*************Getting Text from the FIRST DIV in the begining*************************** " 
       + videoAdUiPreSkipButtonFirstDiv.getText()); 

     WebElement videoAdUiPreSkipButtonSECONDDiv = driver 

     Thread.sleep(5000); 

     log.info("*************VISIBILITY OF THE ELEMENT 'YOU CAN SKIP ADD ' IS AFTER WAITING MORE THAN 5 SECONDS " 
       + "************************* " + videoAdUiPreSkipButton.isDisplayed()); 

     skipaddbutton = driver.findElement(By.xpath("//div[@class='videoAdUiSkipContainer html5-stop-propagation']")); 
     log.info("*************VISIBILITY OF THE ELEMENT FOR SKIP ADD BUTTON" + "************************* " 
       + skipaddbutton.isDisplayed()); 
     log.info("*************VISIBILITY OF THE ELEMENT FOR SKP ADD BUTTON " + "************************* " 
       + skipaddbutton.getText()); 

     skipaddbutton.click(); 

     Thread.sleep(10000); 

    } else { 
     log.info(

       "+++++++++++++video Doesn not have Skip Add button and It is Stopped in Second Catch Block +++++++++++++++++++++++++++"); 

    } 
    } catch (Exception e) { 
     log.info(
       "+++++++++++++video Doesn not have Skip Add button and it is not monextized and I am terminating Program in First excepion Block +++++++++++++++++++++++++++"); 
     **driver.navigate().refresh();** 
     skipADD2(); 

     //e.printStackTrace(); 
    } 

} 

I verwendet driver.navigate() .Aktualisierung(); um das Fenster zu aktualisieren, wenn die Anzeige nicht vorhanden ist.

Verwandte Themen