首页 > 解决方案 > 继续向下滚动,直到找到相应的过滤器(元素?)并单击它 - Selenium Python

问题描述

嗨,我目前正在做 selenium Python。场景是这样的:我目前试图找到某个“元素”或者说过滤器(因为我在网上商店做硒),例如我想找到一个过滤器名称:“LCD”。
结果是错误。问题是这个 LCD 不在屏幕上,这意味着我需要向下滚动,直到该过滤器出现或在屏幕上可见,然后我才能单击它。问题是我不知道正确的代码,或者我可能编码错误。我的代码是这样的:

我的浏览器将继续向下滚动(条件“除外”),直到找到我选择的元素过滤器。问题是它没有点击。是的,它出现在屏幕上,但没有点击(这应该是“尝试”的条件)。

while finding_click is False:
    try:
        driver.find_element_by_xpath('//*[contains(text(),"' + filtchooseText + '")]').click()
        finding_click = True
    except:
        driver.execute_script("window.scrollTo(0, {});".format(scroll))
        scroll = scroll + 20

我想知道怎么了?我想知道如果这是错误的代码是什么?继续向下滚动,直到找到相应的元素然后单击它...?

我使用的软件:Pycharm、Selenium

标签: pythonseleniumscrollpycharmelement

解决方案


如果浏览器处于全屏模式,那么下面的代码应该适合您。

最大化它:

driver.maximize_window()
driver.get("some URL")

然后找到过滤器并点击它使用 ActionChains :

   while True:
        try:
            ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[contains(text(),"' + filtchooseText + '")]')).click().perform()
            break
        except:
            driver.execute_script("window.scrollTo(0, {});".format(scroll))
            scroll = scroll + 20

推荐阅读