首页 > 其他分享 >selenium使用

selenium使用

时间:2024-04-07 17:57:26浏览次数:11  
标签:webdriver time selenium bro 使用 import find browser

为了解决requests无法直接执行JavaScript代码的问题

 

安装

pip3 install selenium

 

 

# 浏览器驱动:http://npm.taobao.org/mirrors/chromedriver/
# 驱动要跟浏览器版本对应  84.0.4147.105:驱动用84.0.4147.30/
# 下载完解压就是个exe(不同平台的可执行文件)
# from selenium import webdriver
# import time
# # bro=webdriver.Chrome()  # 得到一个谷歌浏览器对象,
# # 指定使用跟那个驱动
# bro=webdriver.Chrome(executable_path='./chromedriver.exe') # 得到一个谷歌浏览器对象,
#
# time.sleep(2)
# bro.get('https://www.baidu.com/')  # 在地址栏里输入了百度
# time.sleep(2)
# print(bro.page_source)
# time.sleep(2)
# bro.close()

 

# 模拟登陆百度
# from selenium import webdriver
# import time
# bro=webdriver.Chrome(executable_path='./chromedriver.exe')
#
# bro.get('https://www.baidu.com/')
# time.sleep(0.01)
# input_k=bro.find_element_by_id('kw')
# input_k.send_keys('美女')  # 在框里写入美女
# time.sleep(2)
# sou=bro.find_element_by_id('su')  # 找到搜索按钮
# sou.click() # 点击搜索按钮
# time.sleep(4)
# bro.close()


# from selenium import webdriver
# import time
# bro=webdriver.Chrome(executable_path='./chromedriver.exe')
# bro.implicitly_wait(5)  # 隐士等待:找一个控件,如果控件没有加载出来,等待5s中  等待所有,只需要写着一句,以后找所有控件都按这个操作来
# bro.get('https://www.baidu.com/')
#
# d_button=bro.find_element_by_link_text('登录')
#
# d_button.click()
#
# login_u=bro.find_element_by_id('TANGRAM__PSP_11__footerULoginBtn')
# login_u.click()
#
# username=bro.find_element_by_id('TANGRAM__PSP_11__userName')
# username.send_keys('yxp654799481')
# password=bro.find_element_by_id('TANGRAM__PSP_11__password')
# password.send_keys('yxp997997')
# time.sleep(3)
# submit=bro.find_element_by_id('TANGRAM__PSP_11__submit')
#
# submit.click()
# time.sleep(10)
#
# print(bro.get_cookies())
#
# bro.close()

 

 

##############选择器(find系列)
===============所有方法===================

# 1、find_element_by_id   # 通过id查找控件
# 2、find_element_by_link_text  # 通过a标签内容找
# 3、find_element_by_partial_link_text  # 通过a标签内容找,模糊匹配
# 4、find_element_by_tag_name   # 标签名
# 5、find_element_by_class_name  # 类名
# 6、find_element_by_name      # name属性
# 7、find_element_by_css_selector  # 通过css选择器
# 8、find_element_by_xpath       # 通过xpaht选择器
# 强调:

# 1、find_elements_by_xxx的形式是查找到多个元素,结果为列表




# 获取元素属性
# 重点
# tag.get_attribute('href')  # 找当前控件 的href属性对的值
# tag.text   # 获取文本内容

# 了解
# print(tag.id)   # 当前控件id号
# print(tag.location)  # 当前控件在页面位置
# print(tag.tag_name)  # 标签名
# print(tag.size)      #标签的大小

 

 

####无界面浏览器(phantomjs)
#谷歌浏览器支持不打开页面

####无界面浏览器(phantomjs)
#谷歌浏览器支持不打开页面
# from selenium.webdriver.chrome.options import Options
# from selenium import webdriver
# chrome_options = Options()
# chrome_options.add_argument('window-size=1920x3000') #指定浏览器分辨率
# chrome_options.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
# chrome_options.add_argument('--hide-scrollbars') #隐藏滚动条, 应对一些特殊页面
# chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
#
#
# chrome_options.add_argument('--headless') #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
#
#
# bro=webdriver.Chrome(chrome_options=chrome_options,executable_path='./chromedriver.exe')
# bro.get('https://www.baidu.com/')
# print(bro.page_source)
# bro.close()

 

 

######元素交互
# tag.send_keys()  # 往里面写内容
# tag.click()      # 点击控件
# tag.clear()      # 清空控件内容

#####执行js(有什么用?)

# from selenium import webdriver
# import time
# bro=webdriver.Chrome(executable_path='./chromedriver.exe')
# bro.implicitly_wait(5)  # 隐士等待:找一个控件,如果控件没有加载出来,等待5s中  等待所有,只需要写着一句,以后找所有控件都按这个操作来
# bro.get('https://www.baidu.com/')
#
#
# bro.execute_script('window.open()')
# bro.execute_script('window.open()')
# time.sleep(2)
# bro.close()

 

####模拟浏览器前进后退

# from selenium import webdriver
# import time
# browser=webdriver.Chrome(executable_path='./chromedriver.exe')
# browser.get('https://www.baidu.com')
# browser.get('https://www.taobao.com')
# browser.get('http://www.sina.com.cn/')
#
# browser.back()
# time.sleep(1)
# browser.forward()
#
# browser.close()

 

#####获取cookie
# bro.get_cookies()

 

 

#### 选项卡管理(了解)
# from selenium import webdriver
# import time
# browser=webdriver.Chrome()
# browser.get('https://www.baidu.com')
# browser.execute_script('window.open()')
#
# print(browser.window_handles) #获取所有的选项卡
# browser.switch_to_window(browser.window_handles[1])
# browser.get('https://www.taobao.com')
# time.sleep(2)
# browser.switch_to_window(browser.window_handles[0])
# browser.get('https://www.sina.com.cn')
# browser.close()

 

 

 

##### 异常处理
# from selenium import webdriver
# from selenium.common.exceptions import TimeoutException,NoSuchElementException,NoSuchFrameException
# browser=webdriver.Chrome()
# try:
#
#     browser.get('')
# except Exception as e:
#     print(e)
# finally:
#     # 无论是否出异常,最终都要关掉
#     browser.close()

 

#####动作链()


#### 如何把屏幕拉倒最后(js控制)

# bro.execute_script('window.scrollTo(0,document.body.offsetHeight)')

 

标签:webdriver,time,selenium,bro,使用,import,find,browser
From: https://www.cnblogs.com/97zs/p/18119577

相关文章

  • 【优化】使用绑定变量 OR 不使用绑定变量,这不是问题的根源?
    就目前现状来看,大家有点过分强调绑定变量的作用了。任何一种优化方法都尤其适用场景,绑定变量技术也不例外。不可盲目的将其信奉为影响性能的罪魁祸首。1.分清系统是OLTP还是OLAP类型很重要通常来说,我们把业务分为两类,在线事务处理系统(OLTP)和在线分析系统(OLAP)或者决策支持系统(DSS)。......
  • 3-STM32+W5500远程升级篇OTA(阿里云物联网平台)-STM32通过W5500使用http下载程序文件,
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/STM32W5500AIR202A/alyota.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  ......
  • bs4的使用 遍历文档树
     bs4的使用#遍历文档树#搜索文档树(5种过滤规则)#limit和recursive参数importrequests#pip3installbeautifulsoup4解析html和xml,修改html和xmlfrombs4importBeautifulSoup#res=requests.get('https://www.autohome.com.cn/news/1/#liststart')##withop......
  • 如何使用单片机 pwm 控制 mos 管?
    目录选择适合的硬件连接电路编写代码参考示例程序一程序二测试与调试注意事项        使用单片机(如常见的Arduino、STM32等)通过PWM(脉冲宽度调制)控制MOS管(金属氧化物半导体场效应管)是一种常见的电路控制方法。以下是一个基本的设计步骤指南:选择适合的硬......
  • 【求助】使用flask编写网页时遇到的问题
    @app.route('/signup',methods=['GET','POST'])defsecret():  form3=SecretForm()  ifrequest.method=='POST':    secret=form3.secret.data    ifsecret=='111111':      returnredirect(ur......
  • Go 项目依赖注入wire工具最佳实践介绍与使用
    目录一、引入二、控制反转与依赖注入三、为什么需要依赖注入工具3.1示例3.2依赖注入写法与非依赖注入写法四、wire工具介绍与安装4.1wire基本介绍4.2安装五、Wire的基本使用5.1前置代码准备5.2使用Wire工具生成代码六、Wire核心技术5.1抽象语法树分析5.2模板编程七......
  • 多线程环境中使用MyBatis时避免出现没有token的问题
    //很重要,在多线程没有token下面三行可以解决mybatis方法报错//1.通过当前的WebUtil.getRequest()获取Servlet请求的属性ServletRequestAttributesservletRequestAttributes=newServletRequestAttributes(WebUtil.getRequest());//2.将获取到的Servlet请求属性设置......
  • Vue组件使用(父组件监听子组件数据变化,子组件使用父组件的数据,并监听父组件的数据变化)
    文章来源:https://blog.csdn.net/laodanqiu/article/details/129370442子组件使用父组件数据父组件父组件声明变量 父组件向子组件传递数据子组件 Vue数据类型type有以下几种:String:字符串类型。例如:“helloworld”。Number:数字类型。例如:12,1.5。Boolean:布尔类型。......
  • selenium---八大定位学习笔记
    selenium算是比较主流的。appium,是基于selenium继承实现的。selenium是基于JSCore来实现的。元素的定位:先获取webElement的对象,然后在考虑元素如何操作所有的UI层的自动化,都是基于元素定位来实现的所有的被操作的元素都是webElement对象元素=html标签实际系统中,元素标签......
  • ConfigMap 多种使用方法
    介绍ConfigMap是Kubernetes中的一种资源对象,用于存储非敏感的配置数据,例如键值对、环境变量、配置文件等。它提供了一种将配置数据与应用程序解耦的方式,使得应用程序可以更灵活地部署和管理。注意:ConfigMap在设计上不是用来保存大量数据的。在ConfigMap中保存的数据......