我使用 Python 来抓取一个带有需要滚动的过滤器窗格的网站。我找到了一个有助于滚动元素列表的代码,它实际上找到了一个列表并在循环中移动。
recentList = driver.find_elements_by_xpath("/html/body/div[3]/main/div/div/div/div[1]/div/form/div[2]/fieldset[3]/div/ul/li")
for list in recentList:
driver.execute_script('arguments[0].scrollIntoView({behavior: "smooth", block: "end", inline: "nearest"})', list)
我的代码已经包含一个 for 循环,我只想添加一个需要滚动到的元素。使用上面我写的逻辑(一个循环被简化):
for p in range(1,15):
list = driver.find_element_by_xpath(str('/html/body/div[3]/main/div/div/div/div[1]/div/form/div[2]/fieldset[3]/div/ul/li[[' + str(p) + ']'))
driver.execute_script('arguments[0].scrollIntoView({behavior: "smooth", block: "end", inline: "nearest"})', list)
我不知道为什么它不起作用。这是我得到的错误:
selenium.common.exceptions.InvalidSelectorException: Message: Given xpath expression "/html/body/div[3]/main/div/div/div/div[1]/div/form/div[2]/fieldset[3]/div/ul/li[[1]" is invalid: SyntaxError: The expression is not a legal expression.
有谁知道需要修复什么?最后一个代码中的 XPath 是正确的,并且已经在使用中。
我试图用“recentList 中的列表”替换我当前的循环,但是当它需要滚动过滤器上的页面时代码会停止。