python中selenium操作下拉滚动条方法汇总

UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等;但有一种是在当前显示的页面元素不可见,拖动下拉条后元素就出来了。

比如下面这样一个网页,需要进行拖动下拉条后才能通过selenium找到密码输入框的元素,

在python中有几种方法解决这种问题,简单介绍下,给需要的人:

方法一)使用js脚本直接操作,方法如下:

js="var q=document.getElementById('id').scrollTop=10000"
driver.execute_script(js)

 或:

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

 

这里的id为滚动条的id,但js中没有xpath的方法,所以滚动条没有id的网页此方法不适用

方法二)使用js脚本拖动到提定地方

target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去

这个方法可以将滚动条拖动到需要显示的元素位置,此方法用途比较广,可以使用

方法三)根据页面显示进行变通,发送tab键

在本例中的页面中,密码是输入框,正常手工操作时,可以通过tab键会切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显示

from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)

 

update

前段时间使用robotframe work框架时,selenium2library里面有一个非常好用的功能Focus,会自动定位到元素,研读一下源码:

    def focus(self, locator):
        """Sets focus to element identified by `locator`."""
        element = self._element_find(locator, True, True)
        self._current_browser().execute_script("arguments[0].focus();", element)

从源码中我们可以看到,此方法与我们在python自己写的方法二)一致,工具给我们做了封装。

 

转载于:https://www.cnblogs.com/landhu/p/5761794.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用PythonSelenium可以通过以下步骤下拉滚动条: 1. 导入Selenium库和WebDriver 2. 打开网页 3. 使用JavaScript代码滚动滚动条 4. 等待页面加载完成 具体代码如下: ```python from selenium import webdriver import time # 打开浏览器 driver = webdriver.Chrome() # 打开网页 driver.get("https://www.example.com") # 模拟滚动条下拉 driver.execute_script("window.scrollTo(, document.body.scrollHeight);") # 等待页面加载完成 time.sleep(5) # 关闭浏览器 driver.quit() ``` 其,`execute_script()`方法可以执行JavaScript代码,`window.scrollTo(, document.body.scrollHeight);`表示将滚动条滚动到页面底部,`time.sleep(5)`表示等待5秒钟,以确保页面加载完成。 ### 回答2: Pythonselenium是一个自动化测试框架,可以使用它来模拟用户在浏览器操作。其下拉滚动条是一个常见的操作,实现这个过程可以通过下面的几个步骤: 1. 导入selenium模块并启动浏览器: ```python from selenium import webdriver browser = webdriver.Chrome() # 以Chrome浏览器为例 ``` 2. 打开网页,并通过js代码来获取页面的高度: ```python browser.get(url) # url是你要操作的页面 scroll_height = browser.execute_script('return document.body.scrollHeight') # 获取页面高度 ``` 3. 循环滚动屏幕:可以通过循环不断地执行js代码来实现滚动屏幕的效果。例如,下面的代码可以实现每次滚动一定的距离,并控制滚动的次数。 ```python scroll_distance = 500 # 每次滚动的像素距离 scroll_times = int(scroll_height/scroll_distance) # 滚动的次数 for i in range(scroll_times): js = 'window.scrollTo(0, document.body.scrollHeight/{}*{})'.format(scroll_times, i+1) # 计算滚动距离 browser.execute_script(js) # 执行js代码 time.sleep(1) # 滚动后等待一段时间,让页面加载完成 ``` 这样,就可以利用pythonselenium完成下拉滚动条操作了。需要注意的是,在实际操作,还需要考虑到网页可能存在一些异步加载的内容,例如图片、视频等,可能需要一定的等待时间来等待页面加载完成。 ### 回答3: Python是一种非常流行的编程语言,提供了各种各样的库和框架,包括SeleniumSelenium是一个用于Web应用程序自动化测试的开源工具,它可以自动化浏览器的工作,模拟用户的操作。在Selenium下拉滚动条是一个常见的任务,本文将介绍如何在Python使用Selenium下拉滚动条。 在Python,我们需要安装Selenium库,我们可以使用pip工具来安装它。仅需要使用以下命令即可安装: ``` pip install selenium ``` 在安装好Selenium库之后,我们需要获得一个WebDriver对象。WebDriver是Selenium库用于控制网页浏览器的工具,它可以用于模拟人的操作,例如单击按钮,填写表单和下拉滚动条,在Python我们可以使用以下代码来创建一个Chrome浏览器的WebDriver对象: ``` from selenium import webdriver driver = webdriver.Chrome() ``` 现在,我们已经获得了WebDriver对象,接下来,我们可以使用它来访问一个网站并执行下拉滚动条操作。假设我们要访问百度首页,并将滚动条下拉到页面的底部,我们可以使用以下代码: ``` driver.get("http://www.baidu.com") driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") ``` 在这段代码,我们首先使用get方法来打开百度首页,然后使用execute_script方法来执行JavaScript代码,其我们将滚动条向下滚动到页面的底部。代码的window.scrollTo(0, document.body.scrollHeight)将滚动条的位置设置为文档的底部,scrollTo方法是JavaScript方法,它可以用于控制滚动条的位置。 除了将滚动条下拉到页面底部之外,我们还可以将滚动条向上滚动到页面顶部,方法是将document.body.scrollHeight替换为0,如下所示: ``` driver.execute_script("window.scrollTo(0, 0);") ``` 在Selenium,我们可以使用其他方法来控制滚动条,例如scrollBy方法可以控制滚动条滚动的距离,如下所示: ``` driver.execute_script("window.scrollBy(0, 100);") ``` 在这段代码,我们将滚动条向下滚动100个像素,如果要向上滚动,将100替换为-100即可。 总之,在Python使用Selenium下拉滚动条是一个非常简单的任务,只需要使用execute_script方法并提供相应的JavaScript代码即可实现。PythonSelenium的结合使得我们可以非常方便地自动化Web应用程序,从而节省时间和精力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值