请问Python+Selenium怎么定位不断滚动的元素呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问Python+Selenium怎么定位不断滚动的元素呢?相关的知识,希望对你有一定的参考价值。

具体是这样的,有个ul下有不断滚动的li,要提取不断滚动消失的li中的一些内容,不想做伸手党,实在折腾不下去了,求助。。

参考技术A Python+Selenium怎么定位不断滚动的元素呢
seleniumrc:rc是remotecontrol的缩写,这种方式是使用具体的语言来编写测试类,然后进行测试,它的功能就是用来模拟一个浏览器,主要测试的就是web方面的东西。它支持的语言非常多,C#,Java都行,看网上好多例子都是Java的。这个东西好像一个库文件一样,自己编程调用的。seleniumide:ide就是开发环境的意思,这个工具可以用来录制脚本,这个就有点儿界面的意思了,录制脚本就是它可以在你进行各种测试操作的时候把那些动作对应的函数记录下来,我知道这个ide现在只在FireFox浏览器下支持。好像是安装一个插件就可以了。总之,RC版本应该用的最多。

python-selenium -- iframe及滚动条定位方法详解

一、frame框架里面的元素定位

  1.1 iframe定位 -- 先切换到iframe框架-定位-释放iframe

 技术分享图片

  定位到iframe的方法

"""
Switches focus to the specified frame, by index, name, or webelement.

:Args:
- frame_reference: The name of the window to switch to, an integer representing the index,
or a webelement that is an (i)frame to switch to.

:Usage:
driver.switch_to.frame(‘frame_name‘)
driver.switch_to.frame(1)
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
"""

#切换到iframe
driver.switch_to.frame("login_frame_qq")

#点击账号密码登录
driver.find_element_by_xpath(‘//a[@id="switcher_plogin"]‘).click()
time.sleep(2)
#输入账号密码

#释放iframe 回到主页面
driver.switch_to.default_content()

二、滚动条之后的元素定位
2.1 先把元素拖动到可见区域-定位
  
 1、移动到元素element对象的“底端”与当前窗口的“底部”对齐:
     driver.execute_script("arguments[0].scrollIntoView(false);",element)

2、移动到元素element对象的“顶端”与当前窗口的“顶部”对齐  :
     driver.execute_script("arguments[0].scrollIntoView();",element)

3、移动到页面底部:
      driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

4、移动到页面顶部:
     driver.execute_script("window.scrollTo(document.body.scrollHeight,
     0)") 

如:
#定位百度搜索框
driver.find_element_by_id("kw").send_keys("python")
time.sleep(3)
driver.find_element_by_id("su").click()
time.sleep(5)

#找到这个元素
ele = driver.find_element_by_xpath(‘//a[text()="_百度百科"]‘)
#拖动元素到可见区域--scrollIntoView() 拖到顶部显示,有可能会百度被遮罩层遮挡,定位不到而报错;使用scrollIntoView(false)可视区域底部对齐
driver.execute_script("arguments[0].scrollIntoView(false);",ele)

time.sleep(3)
ele.click()








































以上是关于请问Python+Selenium怎么定位不断滚动的元素呢?的主要内容,如果未能解决你的问题,请参考以下文章

python-selenium -- iframe及滚动条定位方法详解

基于python实现UI自动化3.3 Selenium - JS处理浏览器滚动条

Python selenium 滚动条

Python selenium 滚动条

java+selenium,请问该如何定位#shadow-root里面的元素?

selenium怎么获取网页标签个数?