【selenium】web控件交互课中,scroll_from_element报错

代码如下
from time import sleep

from selenium import webdriver
from selenium.webdriver import TouchActions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait


class TestWait():
    def setup(self):
        option=webdriver.ChromeOptions()
        option.add_experimental_option("w3c",False)
        self.driver=webdriver.Chrome(options=option)
        self.driver.get("https:www.baidu.com")
        self.driver.maximize_window()
        self.driver.implicitly_wait(5)

    def teardown(self):
        self.driver.quit()

    def test_touchaction(self):
        self.driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("selenium测试学习")
        search=self.driver.find_element(By.CSS_SELECTOR,"#su")

        action=TouchActions(self.driver)
        action.tap(search)
        action.perform()
        sleep(3)

        action.scroll_from_element(search,0,10000).perform()
        self.driver.find_element(By.CSS_SELECTOR,"#page a:nth-last-child(0)").click()
        sleep(2)


报错信息

StaleElementReferenceException

感觉好像是我页面由于点击刷新了,找不到元素,然后就报错了

定位方式没有问题,只是CSS selector的表达式写的有问题,想获取page元素节点的最后一个孩子可以使用#page a:nth-last-child(1)来表达, 也可以使用#page a:last-child来获取最后一个孩子节点。

详细用法可以参考:CSS 选择器参考手册

selenium为啥导入不了TouchActions
image

可能是你selenium版本太高 降低到3.141.0

pip3 install selenium==3.141.0

然后再试下