JavaScript / Selenium - 滚动到ul里面的li

时间:2017-12-21 17:54:46

标签: javascript selenium

我有一个下拉列表,其中html为list - <ul><li><a></a></li>...

这个下拉列表是可滚动的,我需要Selenium使用某个<a>滚动到id,因为除非它可见,否则我无法点击它。

可能使用JavaScript但无法弄清楚如何使其发挥作用。

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)

它不起作用。你知道怎么做吗?

2 个答案:

答案 0 :(得分:2)

你尝试过使用行动吗?

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

您可以使用

进一步滚动
    driver.execute_script("window.scrollTo(0,20)")

答案 1 :(得分:0)

要使用ID滚动到特定元素,您可以实现JavascriptExecutor,如下所示:

//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。 您可能(或不)需要使用某种延迟来查看Id元素。

首先,请尝试不使用延迟。