Selenium web自动化-JS处理滚动条

一)整个浏览器的滚动条处理

需要掌握的是‘window.scrollTo()’

1A.scrollTo()

‘window.scrollTo(x,y)’ x,y 绝对坐标 掌握!!!

    def test_46js1(self):

        """控制滚动条-整个浏览器-scrollTo()"""

        self.driver = webdriver.Chrome()

        self.driver.maximize_window()

        self.driver.get("https://www.baidu.com")

        self.xin_find_element(self.driver, By.ID, 'kw').send_keys('Python')

        self.xin_find_element(self.driver, By.ID, 'su').click()

        time.sleep(2)

        js1 = 'window.scrollTo(0,10000)'

        self.driver.execute_script(js1)

        time.sleep(2)

        js2 = 'window.scrollTo(0,0)'

        self.driver.execute_script(js2)

        time.sleep(1)

        self.driver.quit()

 

1B.scrollTo()

’document.documentElement.scrollTo(x,y)’ 了解

    def test_46js4a(self):

        """控制滚动条-整个浏览器-scrollTo()"""

        self.driver = webdriver.Chrome()

        self.driver.maximize_window()

        self.driver.get("https://www.baidu.com")

        self.xin_find_element(self.driver, By.ID, 'kw').send_keys('Python')

        self.xin_find_element(self.driver, By.ID, 'su').click()

        time.sleep(2)

        js3 = 'document.documentElement.scrollTo(0,10000)'

        self.driver.execute_script(js3)

        time.sleep(2)

        js4 = 'document.documentElement.scrollTo(0,0)'

        self.driver.execute_script(js4)

        time.sleep(1)

        self.driver.quit()

二)内嵌窗口的滚动条的处理

3.scrollTo()

    def test_46js7(self):

        """控制滚动条-内嵌滚动条-scrollTo()"""

        driver = webdriver.Chrome()

        driver.get(r'D:\new_web\内嵌div滚动条.html')

        time.sleep(1)

        js = 'document.getElementsByClassName("scroll")[0].scrollTo(10000,10000)'

        driver.execute_script(js)

        time.sleep(2)

        js1 = 'document.getElementsByClassName("scroll")[0].scrollTo(0,0)'

        driver.execute_script(js1)

        time.sleep(2)

        driver.quit()

三)滚动条拉到具体元素的位置

三)滚动条拉到具体元素的位置

 

打开网页有时候无法确定要操作的元素的位置,怎么办呢?

这个时候可以先让页面直接跳到元素出现的位置,然后再操作

 

就是说:将滚动条拖动到需要显示的元素的位置

 

target1111 = driver.find_element_by_xxx(“XXXXX”)

driver.execute_script(“arguments[0].scrollIntoView();”,target1111)

 

    def test_46js9a(self):

        """滚动条拉到指定位置(具体元素)-target-scrollIntoView方法滚动当前元素,进入浏览器的可见区域"""

        self.driver = webdriver.Chrome()

        self.driver.maximize_window()

        self.driver.get("https://www.baidu.com")

        self.xin_find_element(self.driver, By.ID, 'kw').send_keys('Python')

        self.xin_find_element(self.driver, By.ID, 'su').click()

        time.sleep(2)

        # 下面两个方式都可以

        # target11 = self.xin_find_element(self.driver, By.CSS_SELECTOR, 'div#page>a:nth-child(2)')

        target11 = self.xin_find_element(self.driver, By.XPATH, '//div[@id="page"]/a[3]')

 

        self.driver.execute_script("arguments[0].scrollIntoView();", target11)

        time.sleep(2)

        self.driver.quit()

 

 

posted @ 2020-03-23 21:38  不醉不归丫丫  阅读(447)  评论(0)    收藏  举报