zoukankan      html  css  js  c++  java
  • 利用python定位网页上的元素

    1. 想对网页上的元素进行操作,首先需要定位到元素。

    以百度首页为例:

    输入以下代码,打开百度首页:

    # coding = gbk
    from selenium import webdriver
    
    chrome_driver_path = "C:Python27seleniumwebdriverchromedriverchromedriver"
    global browser
    browser = webdriver.Chrome(chrome_driver_path)
    url_int = "https://www.baidu.com/"
    browser.get(url_int)
    print "Open baidu"

    2. 在打开的百度首页,右键点击,选择“查看网页源代码”。

    以下网页源代码是与百度输入框和“百度一下”按钮有关的,先提取在这里,方便后续定位。

    <span class="bg s_ipt_wr"><input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off"></span><span class="bg s_btn_wr"><input type="submit" id="su" value="百度一下" class="bg s_btn"></span>

     3. 定位百度输入框

    通过id定位:

    browser.find_element_by_id("kw")

    通过name定位:

    browser.find_element_by_name("wd")

    通过标签名tag_name定位:

    browser.find_element_by_tag_name("input")

    通过class_name定位:

    browser.find_element_by_class_name("bg_s_btn_wr")

    通过css定位:

    •  以id定位:
    browser.find_element_by_css_selector("a[id="kw"]")
    • 以name定位:
    browser.find_element_by_css_selector("a[name="wd"]")

     通过XPath定位:(XPath是一种在XML文档中定位元素的语言)

    • attribute属性定位(定位input标签下,id=kw的元素):
    browser.find_element_by_xpath("//input[@id='kw']")
    • id相关性定位(/form/span/input层级标签下,div标签下,id=fm的元素):
    browser.find_element_by_xpath("//div[@id='fm']/form/span/input")
    • id为check的tr,定位它的第2个td:
    browser.find_element_by_xpath("tr[@id='check']/td[2]")
    • position位置定位(第7个tr里面的第2个td):
    browser.find_element_by_xpath("//tr[7]/td[2]")
    • href水平参考定位(a标签下,查找包含‘网页’的文本text元素):
    browser.find_element_by_xpath("//a[contains(text(),'网页')]")
    • link定位(a标签下,查找链接为'href='http://www.baidu.com/'的元素):
    browser.find_element_by_xpath("//a[@href='http://www.baidu.com']")

     通过link定位(可以查找文字链接,打开贴吧链接):

    browser.find_element_by_link_text("贴吧")
    browser.find_element_by_partial_link_text("")

     4. 定位”百度一下“按钮

    通过class_name定位

    browser.find_element_by_class_name("bg_s_btn_wr")

     更多参考资料,请参考:

    http://www.cnblogs.com/qingchunjun/p/4208159.html

  • 相关阅读:
    认识与设计Serverless(二)
    认识与设计Serverless(一)
    log4j2动态修改日志级别及拓展性使用
    log4j2高级配置(1)
    log4j2介绍及配置
    Java 并发编程篇
    JAVA多线程之volatile 与 synchronized 的比较
    springboot分布式锁学习
    springboot2连接多数据库mysql+oracle
    Mysql的分页查询优化
  • 原文地址:https://www.cnblogs.com/sophia194910/p/5048186.html
Copyright © 2011-2022 走看看