登录    关于
马育民老师的博客

马育民的博客

QQ:65242847

python selenium查找元素

id查找

find_element_by_id()

name查找

find_element_by_name()

class查找

find_element_by_class_name()

link查找

find_element_by_link_text()

partial link查找

find_element_by_partial_link_text()

tag查找

find_element_by_tag_name()

xpath查找

find_element_by_xpath()

css查找

find_element_by_css_selector()

查找一组

取下标定位

driver.find_elements_by_class_name("j-inputtext")[0].send_keys("yoyo")
driver.find_elements_by_class_name("j-inputtext")[1].send_keys("12333")

class含有空格时解决方法

在实际进行元素定位时,经常发现class name是有多个class组合的复合类,中间以空格隔开。如果直接进行定位会出现报错,可以通过以下方式处理:

  • class属性唯一但是有空格,选择空格两边唯一的那一个
  • 若空格隔开的class不唯一可以通过索引进行定位
    self.driver.find_elements_by_class_name(‘table-dragColumn’)[0].click()
  • 通过css方法进行定位(空格以‘.’代替)
#前面加(.)空格地方用点(.)来代替
self.driver.find_element_by_css_selector('.dtb-style-1.table-dragColumns').click()
#包含整个类
self.driver.find_element_by_css_selector('class="dtb-style-1 table-dragColumns').click()

例子

#coding=utf-8
from selenium import webdriver
browser=webdriver.Firefox()
browser.get("http://www.baidu.com")
#########百度输入框的定位方式##########
#通过id方式定位
browser.find_element_by_id("kw").send_keys("selenium")
#通过name方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过tag name方式定位
browser.find_element_by_tag_name("input").send_keys("selenium")
#通过class name方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")
#通过CSS方式定位
browser.find_element_by_css_selector("#kw").send_keys("selenium")
#通过xpath方式定位
browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
############################################
browser.find_element_by_id("su").click()
time.sleep(3)
browser.quit()

原文出处:https://malaoshi.top/show_1IX1V4JT23UR.html