selenium学习

声明浏览器对象

ubuntu下打不开chrome浏览器,重新安装了chromium-browser,并使用下面的声明语句

1
browser = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver")

方案来源https://stackoverflow.com/questions/22476112/using-chromedriver-with-selenium-python-ubuntu

貌似添加chrome的path也能解决

获取元素

可以通过id,name,classname,xpath,css_selector等获得
两种写法:

1
2
from selenium.webdriver.common.by import By
elem = browser.find_element(By.ID,"kw")

或者

1
elem = browser.find_element_by_id("kw")

获取多个元素

就是element和elements的小区别,返回一个列表

元素交互

先获取特定元素,再对其调用交互
input.send_keys(“xxx”) 为元素赋值”xxx“
button.click() 点击button元素

交互动作

将动作附加到动作链中执行,比如可以实现元素拖拽、点击、双击等

1
from selenium.webdriver import ActionChains

执行JavaScript

browser.execute_script(script_name)

获取属性值

1
2
elem.get_attribute('xxx') 
elem.get_property('xxxx')

获取文本值

elem.text

获取ID、位置、标签名、大小

elem.id
elem.location
elem.tag_name
elem.size

Frame

提取元素时,要注意frame的切换
位于子frame时,找不到父frame中的元素

等待

隐式等待
显式等待

前进后退

1
2
brower.back()
brower.forward()

Cookies

1
2
browser.get_cookies()
browser.add_cookie({dict})

选项卡管理

1
2
3
4
5
#打开一个页面,新建一个选项卡,切换回页面
url="http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
browser.get(url)
browser.execute_script('window.open()')
browser.switch_to.window(browser.window_handles[0])

异常

超时、元素不存在等