提前约定一些变量
from selenium import webdriver
driver = webdriver.Chrome()
url="xxx"
driver.get(url)
定位方法
通过元素id定位
driver.find_element(By.ID,'id')
通过元素name定位
driver.find_element(By.NAME,'name')
通过类名进行定位
driver.find_element(By.CLASS_NAME,'class_name')
通过标签定位
driver.find_element(By.TAG_NAME,'tag_name')
通过xpath表达式定位
driver.find_element(By.XPATH,'xpath')
通过css选择器进行定位
driver.find_element(By.CSS_SELECTOR,'css_selector')
通过完整超链接定位
driver.find_element(By.LINK_TEXT,'link_text')
通过部分链接定位
driver.find_element(By.PARTIAL_LINK_TEXT,'partial_link_text')
webdriver的成员&函数
获取当前页面的title
title = driver.title
print(title)
获取当前页的url
url = driver.current_url
print(url)
获得输入框的尺寸
input_size = driver.find_element(By.ID,'id').size
print(input_size)
获得文本信息
注意:不能获取到输入框的文本信息,下文会介绍怎么获取
text = driver.find_element(By.ID,'id').text
print(text)
返回元素的属性值, 可以是 id、 name、 type 或其他任意属性
attribute = driver.find_element(By.ID,'id').get_attribute('type')
print(attribute)
返回元素的结果是否可见, 返回结果为 True 或 False
result = driver.find_element(By.ID,'id').is_displayed()
print(result)
向input框send信息
driver.find_element(By.ID,'id').send_keys("xxx")
关闭所有标签页
driver.quit()
关于输入框文本获取
上面已经提到了通过text不能获取到输入框的数据,于是我们有下面三种方式去获取
方法一
- 首先先往input框里面send一些东西
driver.find_element(By.ID,'id').send_keys('xxx')
- 然后通过attr获取value值,这里需要注意:使用这个方法需要保证input框有value这个属性
result = driver.execute_script('return $("#id").attr("name");')
print(result)
方法二
直接通过js获取定位的数据,通过.val()
的方法获取
result = driver.execute_script('return $("#id").val();')
print(result)
方法三(推荐使用)
通过selenium
的get_attribute
获取
result = driver.find_element(By.ID,'id').get_attribute('value')
print(result)
一些异常
后续会逐步更新
NoSuchElementException
这个异常发生在没找到该元素造成的,对于一些定位失败的时候我们就可以处理
from selenium.common.exceptions import NoSuchElementException
try:
tt = driver.find_element(By.XPATH, '//*[@id="panel"]/div[3]/div/div[1]/div/div/form/div[2]/div[1]/label/div/input').get_attribute('value')
tt=tt.replace(" ",",")
tt=tt.replace("-",",")
# print(tt)
driver.find_element(By.NAME,'tag').click() # 点击标签框
#
driver.find_element(By.NAME,'tag').clear() # 清空框
driver.find_element(By.NAME,'tag').send_keys(tt) # 自动敲入用户名
#
driver.find_element(By.XPATH,'//*[@id="panel"]/div[3]/div/div[1]/div/div/form/div[5]/div/button[1]').click()# 点击“保存”按钮
except NoSuchElementException:
print("no page ",ipp)