selenium知识点

来源:互联网 发布:刘邦 知乎 编辑:程序博客网 时间:2024/06/06 00:14
注:摘自selenium官方文档,感谢有道词典

前期学习的时候建议使用Firefox + ipython,方便查看每一步的效果

遇到不懂记得使用help()和dir()


一个简单的测试:
from selenium import webdriver                                          #导入需要的网页驱动
driver = webdriver.Firefox(executable_path='浏览器路径')  #用selenium打开浏览器
driver.get(url)                                                                        #输入并访问url
       在这一步可能会出现selenium和Firefox版本的不兼容问题,比如我遇到的可以打开浏览器,
但是没有访问网页。原因是缺少驱动,到https://github.com/mozilla/geckodriver/releases
下载相应版本后解压并配置到系统变量path中即可。


知识点零;输出源码:
        driver.page_source

知识点一:寻找特定标签:
        ①:find_element(self, by='id', value=None)
        ②:find_element(s)_ by_class_name()
        by后面可以是id/class_name/name/tag_name/link_text/partial_link_text/css_selector/xpath

知识点二:获得标签中的内容:
        标签名tag_name\文本text\大小size\位置location\ID\父parent\
        属性: get_property(self, name)
              get_attribute(self, name)

知识点三:输入文本(键盘输入):
        from selenium.webdriver.common.keys import Keys
        ①输入:element.send_keys("some text")
        ②特殊键: element.send_keys(Keys.ARROW_DOWN)

        ③清除输入elemenr.clear()


        特殊按键:
         回车键:'ENTER'
         运算符:'ADD加','SUBTRACT减','MULTIPLY乘','DIVIDE除','EQUALS=','DECIMAL小数点'
         箭头  :'ARROW_DOWN'↓, 'ARROW_LEFT'←, 'ARROW_RIGHT'→, 'ARROW_UP'↑
         方向键:'LEFT','RIGHT','UP','DOWN'
         小键盘:'NUMPAD0', 'NUMPAD1', 'NUMPAD2', 'NUMPAD3', 'NUMPAD4', 'NUMPAD5', 'NUMPAD6', 'NUMPAD7',       'NUMPAD8', 'NUMPAD9',
                      'F1', 'F12', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',, 'F10', 'F11'
         'HOME', 'END'
         'PAUSE暂停', 'RETURN返回',
         'SEMICOLON分号;', 'SEPARATOR分隔符|', , 'SPACE空格', , 'TAB制表符',
         'PAGE_DOWN', 'PAGE_UP'
         'LEFT_ALT',     'ALT'
         'LEFT_CONTROL', 'CONTROL'
         'LEFT_SHIFT',   'SHIFT'
         'BACKSPACE退格键', 'BACK_SPACE', 'CANCEL', 'COMMAND',
         'HELP' ,'ESCAPE','INSERT','DELETE','CLEAR'
         'META',  'NULL'


知识点四:鼠标:
        ①点击,click()

知识点五:下拉标签的选择
         from selenium.webdriver.support.ui import Select
         select = Select(driver.find_element_by_name('name')) 找到该标签
         选择方式:
           ①select.select_by_index(index)                    #根据索引,比如1,2,3,4
           ②select.select_by_visible_text("text")            #根据文本
           ③select.select_by_value(value)                    #根据值
         取消选择:
         select.deselect_all()  #所有
         默认选项列表:
         select = Select(driver.find_element_by_xpath("xpath"))
         all_selected_options = select.all_selected_options
         可选选项列表:
         options = select.options

         提交:
         element.submit()

知识点六:拖拽元素
        #将element拖入target
        element = driver.find_element_by_name("source")
        target = driver.find_element_by_name("target")

        from selenium.webdriver import ActionChains

        action_chains = ActionChains(driver)
        action_chains.drag_and_drop(element, target).perform()

知识点七:在窗口和框架之间移动
        WebDriver支持使用“switch_to_window”方法在指定的窗口之间移动:
              driver.switch_to_window(“windowName”)
        所有对驱动程序的调用将被解释为指向特定的窗口。但是你怎么知道这个窗口的名字呢?
        看看javascript或打开它的链接:
        < a href = "的地方。点击这里打开一个新的窗口< /a>
        或者,您可以将“窗口句柄”传递给“switch_to_window()”方法。

        到指定框架的子框架:driver.switch_to_frame("frameName.0.child")
        回到默认框架:      driver.switch_to_default_content()

知识点8:弹出的对话框
        alert = driver.switch_to_alert()

知识点9:历史记录
        driver.forward()下一页
        driver.back()   上一页

知识点10:cookies:
        driver.get(“http://www.example.com”)
        #现在设置cookie。这个对整个域有效
        cookie = {“name”:“foo”,“value”:“bar”}
        driver.add_cookie(cookie)
        现在,输出当前URL的所有可用cookie
        driver.get_cookies()

知识点11:等待:
        显式等待:
        title_is
        title_contains
        presence_of_element_located
        visibility_of_element_located
        visibility_of
        presence_of_all_elements_located
        text_to_be_present_in_element
        text_to_be_present_in_element_value
        frame_to_be_available_and_switch_to_it
        invisibility_of_element_located
        element_to_be_clickable
        staleness_of
        element_to_be_selected
        element_located_to_be_selected
        element_selection_state_to_be
        element_located_selection_state_to_be
        alert_is_present
例如:
    from selenium.webdriver.support import expected_conditions as EC

    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.element_to_be_clickable((By.ID, 'someid')))

        隐式等待:
例如:
    from selenium import webdriver

    driver = webdriver.Firefox()
    driver.implicitly_wait(10) # seconds
    driver.get("http://somedomain/url_that_delays_loading")
    myDynamicElement = driver.find_element_by_id("myDynamicElement")
原创粉丝点击