2017-12-21 1 views
0

Ich habe ein Drop-Down, die html ist list-<ul><li><a></a></li>...JavaScript/Selen - blättern Sie zu li innen ul

Diese Dropdown scrollbaren ist und ich brauche Selenium zu machen, um <a> mit bestimmten id zu blättern, weil ich nicht auf klicken können es sei denn es ist sichtbar.

Es ist wahrscheinlich möglich mit JavaScript aber kann nicht herausfinden, wie es funktioniert.

clickable_a_id - id of <a> element which I want to scroll to 

self.driver.execute_script(
    # 'arguments[0].scrollTop = document.getElementById("{}").offsetTop + 5 '.format(clickable_a_id), 
    'document.getElementById("{}")[0].scrollIntoView()'.format(clickable_a_id),UL_ELEMENT) 

Es funktioniert nicht. Weißt du wie das geht?

+0

Sie müssen innerhalb der Ansicht scrollen (** nicht ** 'scrollIntoView()' von JS). Teilen Sie die relevante 'HTML'- und letzte Code-Testversion. – DebanjanB

Antwort

1

Haben Sie versucht, eine Aktion zu verwenden?

el = driver.find_element_by_xpath("") 
    webdriver.ActionChains(driver).move_to_element(el).perform() 

Sie können weiter blättern mit

driver.execute_script("window.scrollTo(0,20)") 
0

auf ein bestimmtes Element blättern Id verwenden, können Sie JavascriptExecutor wie unten implementieren:

//Use some delay like wait.until or sleep 

WebElement elem = driver.findElement(By.id("clickable_a_id")); 
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", elem); 

//Use some delay like wait.until or sleep 

PS. Möglicherweise müssen Sie eine Verzögerung für die Sichtbarkeit des Id-Elements verwenden (oder nicht).

Versuchen Sie zuerst, ohne Verzögerung zu verwenden.

+0

@MilanoS Bruder! versuche die Antwort, die ich gepostet habe, umzusetzen und lass mich dein Feedback wissen. –