Selenium

一 Selenium WebDriver查找页面元素及元素操作

1. 元素常用定位方法

  1. 通过id定位元素:find_element_by_id(“id_vaule”)
  2. 通过name定位元素:find_element_by_name(“name_vaule”)
  3. 通过tag_name定位元素:find_element_by_tag_name(“tag_name_vaule”)
  4. 通过class_name定位元素:find_element_by_class_name(“class_name”)
  5. 通过css定位元素:find_element_by_css_selector();用css定位是比较灵活的
  6. 通过xpath定位元素:find_element_by_xpath(“xpath”)
  7. 通过link_text定位:driver.find_element_by_link_text(“新闻”).click()
  8. 通过partial link_text 定位:driver.find_element_by_partial_link_text(“闻”).click()

2.sleep休眠方法

Time.sleep(1)

3.Selenium显示等待和隐式等待的区别

1、selenium的显示等待

原理:显示等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么久跳出Exception
(简而言之,就是直到元素出现才去操作,如果超时则报异常)

2、selenium的隐式等待

原理:隐式等待,就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素为止。

注意:在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内部不断的刷新页面去寻找我们需要的元素

3、笨方法等待(死等)

使当前线程进入等待,time.sleep();这种等待属于死等,很容易让线程挂掉,使程序抛异常,所以要慎用此方法
显式等待

显式等待

element=WebDriverWait(driver,timeout, poll_frequency=0.5,ignored_exceptions=None).until(
        EC.presence_of_element_located((By.ID, "kw"))
)
driver  	#浏览器驱动
timeout  	#最长超时时间  默认以秒为单位
poll_frequency=0.5  #步长
ignored_exceptions #	超时后的异常信息  默认抛noSuchElementException	
EC.presence_of_element_located((By.ID, "kw")) #判断元素是否被加载在dom树中,不代表他一定可见。

隐式等待

含义:通过一定时长等待,如果超出设置的时长元素还没有被加载,抛出NosuchException.
# 设置隐式等待为 10 秒
driver.implicitly_wait(10)

4.浏览器基本操作

driver = webdriver.Firefox()	# 选择浏览器: 
driver.get(self.base_url + " www.baidu.com")	#打开url: 
driver.forward()/driver.back()	#前进/后退: 
driver.refresh()		# 刷新
browser.maximize_window()	# 最大化
print(driver.title)			# 返回当前页面标题
print(driver.current_url)	# 返回当前页面url
driver.window_handles		# 返回当前浏览器的所有窗口
driver.current_window_handle	# 返回当前浏览器的窗口句柄
driver.switch_to_window(“window_name”)	# 选择窗口
driver.switch_to_alert()	 # 对话框操作
driver.quit()/driver.close()	# 关闭浏览器:

5.键盘事件

  * send_keys(Keys.BACK_SPACE) 删除键
  * send_keys(Keys.SPACE) 空格键(Space)
  * send_keys(Keys.TAB) 制表键(Tab)
  * send_keys(Keys.ESCAPE) 回退键(Esc)
  * send_keys(Keys.ENTER) 回车键(Enter)
  * send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
  * send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
  * send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
  * send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
  * send_keys(Keys.F1) 键盘 F1
  ……
  * send_keys(Keys.F12) 键盘 F12

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值