zoukankan      html  css  js  c++  java
  • selenium(二)查找定位目标 ID XPATH CSS 操作目标

    简介:

    我们只打开一个页面是没有什么意义的。

    尽管你可以get很多次。

    selenium可以做的更多,比如找到百度的搜索框,输入我们要搜索的内容,再用鼠标点击搜索按钮,再把搜索结果提取出来……

    这篇文章,就是如何找到百度搜索框,输入内容,点击搜索。

    原来喜欢用firebug,但是停止更新了,新的firefox开发了个什么Firefox Developer Edition,装了也不怎么会用。

    教程就用chrome吧。免插件。

    一:认识页面元素

    <a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
    
    <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
    
    <input type="submit" id="su" value="百度一下" class="bg s_btn">

    这是百度首页当中的三个元素,第一行是顶部的新闻链结,第二行是搜索框,第三行是搜索按钮。

    二:认识查找元素的方法

    selenium 下  webdriver 对象 有两个方法来帮助我们查找页面元素

    driver.find_element()
    driver.find_elements()

    find_element是查找一个元素

    find_elements是查找多个元素

    具体方法有:

    driver.find_element_by_id()
    driver.find_element_by_name()
    driver.find_element_by_xpath()
    driver.find_element_by_tag_name()
    driver.find_element_by_link_text()
    driver.find_element_by_class_name()
    driver.find_element_by_css_selector()
    driver.find_element_by_partial_link_text()
    driver.find_elements_by_id()
    driver.find_elements_by_name()
    driver.find_elements_by_xpath()
    driver.find_elements_by_tag_name()
    driver.find_elements_by_link_text()
    driver.find_elements_by_class_name()
    driver.find_elements_by_css_selector()
    driver.find_elements_by_partial_link_text()

    个人比较喜欢用xpath,因为可以用很多工具生成,省去了自己分析目标页面源码的时间。

    三:selenium操作目标

    perform
    reset_actions
    click
    click_and_hold
    context_click
    double_click
    drag_and_drop
    drag_and_drop_by_offset
    key_down
    key_up
    move_by_offset
    move_to_element
    move_to_element_with_offset
    pause
    release
    send_keys
    send_keys_to_element

    虽然有这么多方法,但是我用的也很少啊。

    我只用过click,点击

    send_keys,输入。

    以后用到再说吧。

    context_click  右键点击
    double_click   双击

    四:结合起来一起用

    from time import sleep
    from selenium import webdriver
    #定义浏览器是firefox
    driver=webdriver.Firefox()
    #页面打开百度
    driver.get('http://www.baidu.com')
    sleep(1)
    #使用id查找kw,并输入 淘宝
    driver.find_element_by_id('kw').send_keys('淘宝')
    #使用id查找su,并点击
    driver.find_element_by_id('su').click()
    sleep(3)
    #使用name查找wd,清除内容
    driver.find_element_by_name('wd').clear()
    #使用name查找wd,输入python
    driver.find_element_by_name('wd').send_keys('python')
    #使用css selector 查找#su 并点击
    driver.find_element_by_css_selector("#su").click()
    sleep(3)
    #这些是使用xpath定位查找。
    driver.find_element_by_xpath('//*[@id="kw"]').clear()
    driver.find_element_by_xpath('//*[@id="kw"]').send_keys('selenium')
    driver.find_element_by_xpath('//*[@id="su"]').click()
    sleep(3)
    driver.quit()

    这段代码就展示了,使用ID NAME CSS SELECTOR 来定位页面元素,并且输入文字,清除文字,点击

    五:获取css_selector xpath

    这个ID, NAME,页面源码里面还好看到,css_selector xpath,可不好复制,其实也是一样的复制,我是懒人。

    1.先讲firefox

    在目标上点击右键,选择查看元素

    下面会弹出查看器,并且有一行或几行是加了底色的

    在加了底色的这部分,继续点右键,复制,xpath

    好了,这就有了xpath参数。可以在这个搜索里面验证

    没有了firebug,默认的也就提取xpath了。

    2,chrome中的操作

    也是右键点击,不过chrome叫检查。

    弹出的在右侧,也有几行加了背景色。

    在有背景色这一部分右键

    看到了xpath,还有一个selector 对应的是css_selector

    好了,现在我们学会了如何使用浏览器来帮助我们找到xpath,css_selector,编写你的代码,去网站上转一转吧。

  • 相关阅读:
    本月周六周日LIST集合
    c#动态调用WEBSERVICE接口
    c#调用
    web上传下载文件
    MVC 的知识
    MongoDB 无法创建抽象类的问题,
    并行活动
    C# 字符串计算表达式
    c# 将字符串转换为逻辑表达式(字符串转换布尔)
    C# 中间语言、CLR、CTS、CLS
  • 原文地址:https://www.cnblogs.com/jackadam/p/8418159.html
Copyright © 2011-2022 走看看