1. 一些其他
#coding=utf-8 from selenium import webdriver browser = webdriver.Chrome() browser.get("http://www.baidu.com") #百度输入框尺寸 size = browser.find_element_by_id("kw").size print 'size=',size #底部备案信息 text = browser.find_element_by_id("cp").text print 'text=',text #属性值 attribute=browser.find_element_by_id("kw").get_attribute('type') print 'attribute = ',attribute
2.
ActionChains 类鼠标操作的常用方法:
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停在一个元素上
click_and_hold() 按下鼠标左键在一个元素上
3. 鼠标右键
driver.get('https://www.baidu.com') element = driver.find_element_by_xpath("//*[@id='lg']/img") ActionChains(driver).context_click(element).perform()
4. 设置等待时间
implicitly_wait():是 webdirver 提供的一个超时等待。隐的等待一个元素被发现,或一个命令完成。
如果超出了设置时间的则抛出异常。
WebDriverWait():同样也是 webdirver 提供的方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。
5. 对于批量打钩
# 选择页面上所有的 tag name 为 input 的元素 inputs = driver.find_elements_by_tag_name('input') #然后从中过滤出 tpye 为 checkbox 的元素,单击勾选 for input in inputs: if input.get_attribute('type') == 'checkbox': input.click() #driver.quit()
但是好像速度特别慢诶。。。
6. 层级定位
那个给的html我按不出来啊。。。
7. 定位 frame 中的对象
如果一个frame中嵌套了另一个页面
先找到
driver.switch_to_frame("f1")
再找到
driver.switch_to_frame("f2")
然后正常操作
8. 对话框处理登录百度
用class和id定位都不行,用xpath可以
#coding=utf-8 from selenium import webdriver import time driver = webdriver.Chrome() driver.get("http://www.baidu.com/") #点击登录链接 time.sleep(5) driver.find_element_by_xpath("//*[@id='u1']/a[7]").click() time.sleep(5) #通过二次定位找到用户名输入框 div=driver.find_element_by_class_name("tang-content").find_element_by_name("userName") div.send_keys("username") time.sleep(5) #输入登录密码 driver.find_element_by_name("password").send_keys("password") #点击登录 driver.find_element_by_id("TANGRAM__PSP_10__submit").click()