selenium+phantomjs的使用

mac2026-01-13  10

基本套路:

from selenium import webdriver #1.创建driver对象 driver=webdriver.Phantomjs() #driver=webdriver.Chrome() #2.请求url driver.get(url) #3.等待 time.sleep() #4.获取页面内容 html=driver.page_source #解析,如用lxml模块解析 tree=etree.HTML(html)

selenium的常用方法:

1.获取当前页面的Url

方法:current_url 实例:driver.current_url

2.获取元素坐标

方法:location 解释:首先查找到你要获取元素的,然后调用location方法 实例:driver.find_element_by_xpath("xpath").location

3.表单的提交

方法:submit 解释:查找到表单(from)直接调用submit即可 实例:driver.find_element_by_id("form1").submit()

4.获取CSS的属性值

方法:value_of_css_property(css_name) 实例:driver.find_element_by_css_selector("input.btn").value_of_css_property("input.btn")

5.获取元素的属性值

方法:get_attribute(element_name) 实例:driver.find_element_by_id("kw").get_attribute("kw")

6.判断元素是否被选中

方法:is_selected() 实例:driver.find_element_by_id("form1").is_selected()

7.返回元素的大小

方法:size 实例:driver.find_element_by_id("iptPassword").size 返回值:{'width': 250, 'height': 30}

8.判断元素是否显示

方法:is_displayed() 实例:driver.find_element_by_id("iptPassword").is_displayed()

9.判断元素是否被使用

方法:is_enabled() 实例:driver.find_element_by_id("iptPassword").is_enabled()

10.获取元素的文本值

方法:text 实例:driver.find_element_by_id("iptUsername").text

11.元素赋值

方法:send_keys(*values) 实例:driver.find_element_by_id("iptUsername").send_keys('admin')

12.返回元素的tagName

方法:tag_name 实例:driver.find_element_by_id("iptUsername").tag_name

13.删除浏览器所有的cookies

方法:delete_all_cookies() 实例:driver.delete_all_cookies()

14.删除指定的cookie

方法:delete_cookie(name) 实例:deriver.delete_cookie("my_cookie_name")

15.关闭浏览器

方法:close() 实例:driver.close()

16.关闭浏览器并且退出驱动程序

方法:quit() 实例:driver.quit()

17.返回上一页

方法:back() 实例:driver.back()

18.清空输入框

方法:clear() 实例:driver.clear()

19.浏览器窗口最大化

方法:maximize_window() 实例:driver.maximize_window()

20.查看浏览器的名字

方法:name 实例:drvier.name

21.返回当前会话中的cookies

方法:get_cookies() 实例:driver.get_cookies()

22.根据cookie name 查找映射Value值

方法:driver.get_cookie(cookie_name) 实例:driver.get_cookie("NET_SessionId")

23.截取当前页面

方法:save_screenshot(filename) 实例:driver.save_screenshot("D:\\Program Files\\Python27\\NM.bmp")

等待的三种设置:

1.强制等待

time.sleep() 缺点:不确定页面是否是否已经加载完成,或者未加载好,需要设置的时间不确定。

2.隐式等待
driver.implicitly_wait(10)

缺点:隐式等待需要将页面全部加载完成,像js,css甚至广告,直到页面的左上角不会转圈圈,但往往需要爬取的信息不需要将页面全部加载下来,因此隐式等待耗费了一些时间。

3.显式等待
from selenium.webdriver.support.wait import WebDriverWait from selenium.wendriver.support import expected_conditions as EC from selenium.webdriver.common.by import By #1.创建等待的对象 wait=WebDriverWait( driver, #浏览器的驱动对象 10, #需要等待的时长 0.5 #每次扫描的时间 ) #2.设置等待条件 wait.until(EC.presence_of_element_located((By.ID,'kw'))) #等待条件EC.presence_of_element_located(locater) #定位器locator为一个元组

selenium的等待条件:

1.EC.title_is 2.EC.title_contains 这两个条件类验证title,验证传入的参数title是否等于或在driver.title中 3.EC.presence_of_element_located((By.CSS_SELECTOR,'.ui-page > wrap')) 4.EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.ui-page')) 这两个条件验证元素是否出现,传入的参数都是元组类型的locator,如(By.ID, 'kw') 一个只要一个符合条件的元素加载出来就通过; 另一个必须所有符合条件的元素都加载出来才行 5.EC.visibility_of_element_located 6.EC.invisibility_of_element_located 7.EC.visibility_of 这三个条件验证元素是否可见 前两个传入参数是元组类型的locator,第三个传入WebElement 第一个和第三个其实质是一样的 8.EC.text_to_be_present_in_element 9.EC.text_to_be_present_in_element_value 这两个判断某段文本是否出现在某元素中 一个判断元素的text,一个判断元素的value属性 10.EC.frame_to_be_available_and_switch_to_it 这个条件判断frame是否可切入, 可传入locator元组或者直接传入定位方式:id、name、index或WebElement 11.EC.alert_is_present #这个条件判断是否有alert出现 12.EC.element_to_be_clickable #这个条件判断元素是否可点击,传入locator 13.EC.element_to_be_selected 14.EC.element_located_to_be_selected 15.EC.element_selection_state_to_be 16.EC.element_located_selection_state_to_be #这四个条件判断元素是否被选中, 第一个条件传入WebElement对象,第二个传入locator元组 #第三个传入WebElement对象以及状态,相等返回True,否则返回False #第四个传入locator以及状态,相等返回True,否则返回False 17.EC.staleness_of #最后一个条件判断一个元素是否仍在页面中,传入WebElement对象,可以判断页面是否刷新
最新回复(0)