selenium webdriver基于Python系列文章

作者: 七月尾巴_葵花 | 来源:发表于2017-05-24 22:21 被阅读254次

    常用的有以下几种

    id 
    name 
    class 
    name
    tag 
    name 
    link 
    text 
    partial link text 
    xpath 
    css selector
    

    分别对应 python webdriver 中的方法为:

    find_element_by_id() 
    find_element_by_name() 
    find_element_by_class_name() 
    find_element_by_tag_name()
    find_element_by_link_text() 
    find_element_by_partial_link_text() 
    find_element_by_xpath()
    find_element_by_css_selector()  
    

    id\name \ class name \ tag name :
    百度搜索框前端代码(通过firebug查看)

    <input  id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
    find_element_by_id(‘kw1’) 
    find_element_by_name(‘wd’) 
    find_element_by_class_name(‘s_ipt’)
     find_element_by_tag_name(‘input’) 
    

    注:页面上的元素tag name 相同的几率很高

    link\partial link : 百度首页文字链接:

    <a href="http://news.baidu.com" name="tj_news">新 闻</a> 
    <a href="http://tieba.baidu.com" name="tj_tieba">贴 吧</a> 
    <a href="http://zhidao.baidu.com" name="tj_zhidao">知 道</a> 
    find_element_by_link_text(u‘新 闻’) 
    find_element_by_partial_link_text(‘新’) 
    find_element_by_link_text(u‘贴 吧’) 
    

    注:中文字符串加u 是将中文转换成unicode,防止编码问题。

    find_element_by_xpath(‘//input[@name='wd']’) find_element_by_xpath(‘//input[@class='s_ipt']’) 
    find_element_by_xpath(‘//span[@class='bg s_iptwr']/input’) 
    find_element_by_xpath(‘//form[@id='form1']/span/input’) 
    find_element_by_xpath(‘/html/body/div/div[4]/div[2]/div/form/span/input’)
    

    css常见语法

    css

    </form> 
    <div class="subdiv">  
    <ul id="recordlist">     
    <p>Heading</p> 
    

    定位</from>

    find_element_by_css_selector(‘from’) 
    

    定位

    <div class="subdiv"> find_element_by_css_selector(‘.subdiv’) 
    
    find_element_by_css_selector(‘from+div’) 
    

    定位

    <ul id="recordlist"> find_element_by_css_selector(‘#recordlist’) 
    
    find_element_by_css_selector(‘ul#recordlist’) find_element_by_css_selector(‘div>ul’) 
    

    定位

    <p>Heading</p> find_element_by_css_selector(‘div>ul’) find_element_by_css_selector(‘div.subdiv > ul > p’) 
    

    webdriver API
    浏览器最大化:

     maximize_window() 
    

    设置浏览器宽、高:

    set_window_size(480, 800) 
    

    控制浏览器后退,前进:

    back() forward() 
    

    浏览器最大化

    driver.maximize_window() #将浏览器最大化显示 
    

    浏览器设置宽高

     driver.set_window_size(800, 600) 
    

    控制浏览器前进、后退

    driver.get('http://www.baidu.com') #访问百度首页 
    driver.get(‘http://news.baidu.com’) #访问新闻页面 
    driver.back() #返回(后退)到百度首页 
    driver.forward() #前进到新闻页
    

    WebElement接口常用方法:
    clear 清除元素的内容
    send_keys 在元素上模拟按键输入 (这里需要注意的是,我们一般会在脚本开始声明代码的编码格式为utf-8,所以当我们使用中文字符串操作时,应在字符串前面加小u,进行转码标识. send_keys(u“中文内容”)
    click 单击元素,单击任何可以点击的元素,文字/图片连接,按钮, 下拉按钮等。
    submit 提交表单,提交对象是一个表单
    size 返回元素的尺寸
    text 获取元素的文本
    get_attribute(name) 获得属性值
    is_displayed() 设置该元素是否用户可见

    driver.find_element_by_id(“username").clear() 
    driver.find_element_by_id(" username ").send_keys("username") 
    driver.find_element_by_id(“password").clear() 
    driver.find_element_by_id(" password ").send_keys("password") 
    driver.find_element_by_id("loginBtn").click() #通过 submit() 来提交表单 
    #driver.find_element_by_id("loginBtn").submit() 
    

    ActionChains 类鼠标操作的常用方法:
    context_click() 右击
    double_click() 双击
    drag_and_drop() 拖动
    move_to_element() 鼠标悬停在一个元素上
    click_and_hold() 按下鼠标左键在一个元素上

    ActionChains 类鼠标操作的常用方法:

    context_click()  右击 
    
    #引入ActionChains类 
    from selenium.webdriver.common.action_chains import ActionChains .... 
    
    #定位到要右击的元素 
    right =driver.find_element_by_xpath("xx") 
    
    #对定位到的元素执行鼠标右键操作 
    ActionChains(driver).context_click(right).perform() .... 
    

    ActionChains 类鼠标操作的常用方法:

    drag_and_drop() 拖动

    #引入ActionChains类 
    from selenium.webdriver.common.action_chains import ActionChains ... 
    
    #定位元素的原位置 
    element = driver.find_element_by_name("xxx") 
    
    #定位元素要移动到的目标位置 
    target =  driver.find_element_by_name("xxx") 
    
    #执行元素的移动操作 ActionChains(driver).drag_and_drop(element,target).perform() 
    
    
    ActionChains 类鼠标操作的常用方法:    
    move_to_element()   鼠标悬停 
    
    #引入ActionChains类 
    from selenium.webdriver.common.action_chains import ActionChains ... 
    
    #定位元素的原位置 
    element = driver.find_element_by_name("xxx") 
    
    #定位元素要移动到的目标位置 
    target =  driver.find_element_by_name("xxx") 
    
    #执行元素的移动操作
     ActionChains(driver).drag_and_drop(element,target).perform() 
    

    Keys 类键盘操作的常用方法:   
    send_keys(Keys.BACK_SPACE) 删除键(BackSpace)   
    send_keys(Keys.SPACE) 空格键(Space)   
    send_keys(Keys.TAB) 制表键(Tab)   
    send_keys(Keys.ESCAPE) 回退键(Esc)   
    send_keys(Keys.ENTER) 回车键(Enter)   
    send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)   
    send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)   
    send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)   
    send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)

    ctionChains 类鼠标操作的常用方法:
     
    move_to_element() 鼠标悬停

    #输入框输入内容 driver.find_element_by_id("kw1").send_keys("seleniumm") 
    time.sleep(3) 
    
     #删除多输入的一个m driver.find_element_by_id("kw1").send_keys(Keys.BACK_SPACE) 
    time.sleep(3) 
    

    打印信息(断言的信息):   
    title   返回当前页面的标题   
    current_url   获取当前加载页面的URL   
    text   获取元素的文本信息

    打印信息(126邮箱):

    #获得前面title,打印 
    title = driver.title 
    print title 
    
    #获得前面URL,打印 
    now_url = driver.current_url 
    print now_url    
    
    #获得登录成功的用户,打印 
    now_user=driver.find_element_by_id("spnUid").text 
    print now_user 
    
    
     脚本中的等待时间: 
    sleep():    python提供设置固定休眠时间的方法。 
    implicitly_wait():    是webdirver 提供的一个超时等待。
     WebDriverWait():    同样也是webdirver 提供的方法。 
    
    time.sleep(2)
    

    相关文章

      网友评论

      本文标题:selenium webdriver基于Python系列文章

      本文链接:https://www.haomeiwen.com/subject/eqrnxxtx.html