selenium库学习笔记(一)

selenium页面交互

打开网页:

 1 import time
 2 from selenium import webdriver
 3 
 4 driver = webdriver.Chrome()
 5 
 6 driver.get('https://www.baidu.com')
 7 
 8 try:
 9     driver.save_screenshot('01.png')
10 except Exception as e:
11     print(e)
12 finally:
13     time.sleep(5)
14     driver.close()

网页定位:

  我们可以根据ID,class等去定位:

  在一个页面中有很多不同的策略可以定位一个元素。我们可以选择最合适的方法去查找元素。Selenium提供了下列的方法:

    单个元素:

    find_element_by_id

    find_element_by_name       

    find_element_by_xpath

    find_element_by_link_text       定位那些网页上点击按钮(以文本定位;超链接跳转那种)

    find_element_by_class_name

    find_element_by_css_selector

    多个元素:

    find_elements_by_id   ...   与上面是一样的

 1 import time
 2 from selenium import webdriver
 3 driver = webdriver.Chrome()
 4 
 5 driver.get('https://www.baidu.com')
 6 
 7 try:
 8     driver.find_element_by_id('kw').send_keys('python')
 9 except Exception as e:
10     print(e)
11 finally:
12     time.sleep(5)
13     driver.close()

  上面的代码定位了百度的输入框并输入‘python’。

定位一些点击按钮:

 1 driver = webdriver.Chrome()
 2 
 3 driver.get('https://www.baidu.com')
 4 print(driver.page_source)
 5 
 6 try:
 7     driver.find_element_by_link_text('贴吧').click()
 8 except Exception as e:
 9     print(e)
10 finally:
11     time.sleep(5)
12     driver.close()
 1 driver = webdriver.Chrome()
 2 
 3 driver.get('https://www.baidu.com')
 4 
 5 try:
 6     driver.find_element_by_id('kw').send_keys('python')
 7     driver.find_element_by_id('su').click()
 8     time.sleep(2)
 9     driver.find_element_by_xpath('//*[@id="1"]/h3/a[1]').click()
10 except Exception as e:
11     print(e)
12 finally:
13     time.sleep(5)
14     driver.close()

网页是拖动操作:

  在selnium当中除了简单的点击动作之外,还有一些稍微复杂动作如元素的拖拽。在实现元素拖拽的时候需要使用另外一个模块。

ActionChains这个模块基本可以满足我们对鼠标操作的需求。ActionChains的执行原理就是当调用ActionChains方法的时候不会立即

执行,而是将所有的操作暂时存储在一个队列中,当调用perform()的方法时候,队列会按照放入的先后顺序依次执行。ActionChains

提供的方法

    click(on_element=None)    #单击鼠标左键

    click_and_hold(on_element=None)    #点击鼠标左键,按住不放

    context_click(on_element=None) #点击鼠标右键

    double_click(on_element=None) #双击鼠标左键

    drag_and_drop(source, target) #拖拽到某个元素然后松开

    drag_and_drop_by_offset(source, xoffset, yoffset)#拖拽到某个坐标然后松开

    move_by_offset(xoffset, yoffset) #鼠标移动到距离当前位置(x,y)

    move_to_element(to_element) #鼠标移动到某个元素

    move_to_element_with_offset(to_element, xoffset, yoffset) #将鼠标移动到距某个元素多少距离的位置

    release(on_element=None) #在某个元素位置松开鼠标左键

    perform() #执行链中的所有动作

 1 # 拖动
 2 import time
 3 from selenium import webdriver
 4 from selenium.webdriver.common.action_chains import ActionChains
 5 driver = webdriver.Chrome()
 6 
 7 driver.get('http://www.treejs.cn/v3/demo/cn/exedit/drag.html')
 8 time.sleep(1)
 9 element = driver.find_element_by_id('treeDemo_5_span')
10 target = driver.find_element_by_id('treeDemo_16_span')
11 ActionChains(driver).drag_and_drop(element, target).perform()
12 time.sleep(5)
13 driver.close()

弹窗操作:

1 import time
2 from selenium import webdriver
3 driver = webdriver.Chrome()
4 
5 driver.get('http://localhost:63342/05-0413-selenium+phantomjs/007.html?_ijt=832csv0vkrd2eq97f21rt06hvd')
6 time.sleep(1)
7 driver.switch_to_alert()
8 time.sleep(2)
9 driver.close()

  弹窗的html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>alert('hello')</script>
</body>
</html>

 

posted @ 2018-04-16 10:13  巴蜀秀才  阅读(134)  评论(0编辑  收藏  举报