5. CSS元素定位

  • CSS属性定位
    • 用#表示id属性:#kw
    • 用.表示class属性:.s_ipt
    • 直接使用标签名:input,在下面的例子中使用标签定位会报错,因为有多个同名标签,无法准确定位
    • from selenium  import webdriver
      import time
      driver=webdriver.Firefox()
      driver.get("https://www.baidu.com")
      time.sleep(3)
      #css通过id属性定位
      driver.find_element_by_css_selector("#kw").send_keys("python")
      #css通过class属性定位
      driver.find_element_by_css_selector(".s_ipt").send_keys("python")
      #css通过标签属性定位
      driver.find_element_by_css_selector("input").send_keys("python")
    • from selenium  import webdriver
      import time
      driver=webdriver.Firefox()
      driver.get("https://www.baidu.com")
      time.sleep(3)
      #css通过name属性定位
      driver.find_element_by_css_selector("[name='wd']").send_keys("python")
      #css通过autocomplete属性定位
      driver.find_element_by_css_selector("[autocomplete='off']").send_keys("python")
      #css还可以通过type属性定位

       

  • css通过标签与属性组合定位
    • from selenium  import webdriver
      import time
      driver=webdriver.Firefox()
      driver.get("https://www.baidu.com")
      time.sleep(3)
      #css通过标签与class属性定位
      driver.find_element_by_css_selector("input.s_ipt").send_keys("python")
      #css通过标签与id属性定位
      driver.find_element_by_css_selector("input#kw").send_keys("python")
      #css通过标签与id属性定位
      driver.find_element_by_css_selector("input[id='kw']").send_keys("python")
      #可以只要属性定位,没有值,但是此处有同名,运行会报错
      driver.find_element_by_css_selector("input[name]")
      #css通过两种属性组合定位
      driver.find_element_by_css_selector("[name='wd'][autocomplete='off']").send_keys("python")
  • css层级关系
    • from selenium  import webdriver
      import time
      driver=webdriver.Firefox()
      driver.get("https://www.baidu.com")
      time.sleep(3)
      #css通过层级id属性的定位
      driver.find_element_by_css_selector("form#form>span>input").send_keys("python")
      #css通过层级class属性定位
      driver.find_element_by_css_selector("form.fm>span>input").send_keys("python")

       

  • css索引
    •   

      nth-last-child(n),倒数第几个标签

      first-child,第一个标签

      last-child,最后一个标签

      only-child,唯一的标签

  • css逻辑运算
    • 不需要直接写明and
    • from selenium  import webdriver
      import time
      driver=webdriver.Firefox()
      driver.get("https://www.baidu.com")
      time.sleep(3)
      driver.find_element_by_css_selector("[name='wd'][autocomplete='off']").send_keys("python")
  • CSS模糊匹配
    • from selenium  import webdriver
      import time
      driver=webdriver.Firefox()
      driver.get("https://www.baidu.com")
      time.sleep(3)
      #属性值由多个空格隔开,匹配其中一个值
      driver.find_element_by_css_selector("input[class~='s_btn']")
      #匹配属性值为字符串开头
      driver.find_element_by_css_selector("input[class^='s_i']").send_keys("python")
      #匹配属性值为字符串结尾
      driver.find_element_by_css_selector("input[class$='ipt']").send_keys("python")

       

posted on 2019-06-27 21:05  Arcy  阅读(192)  评论(0编辑  收藏  举报

导航