NAME定位
-
name属性指定元素的名称,在当前的HTML文档中可以不唯一
<input type='text' name='username' size=25> <input type='password' name='password' size=25>
-
WebDriver提供的NAME定位就是通过元素的name属性值来查找目标元素,find_element()方法返回一个页面元素对象
# 语法 变量 = driver.find_element(By.NAME,"name属性值") # 示例 username = driver.find_element(By.NAME,'username') password = driver.find_element(By.NAME,'password')
"""
启动Firefox,打开前台登录页,完成登录操作,等待3秒,关闭浏览器
输入用户名:peter
输入密码:abc123
点击"立即登录"按钮
"""
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Firefox() # 启动浏览器
driver.get('http://localhost/upload/user.php') # 打开前台登录页
# 定位元素
username = driver.find_element(By.NAME,'username') # 用户名文本框
password = driver.find_element(By.NAME,'password') # 密码文本框
submit = driver.find_element(By.NAME,'submit') # 立即登录按钮
# 操作元素
username.send_keys('peter') # 输入用户名 peter
password.send_keys('abc123') # 输入密码 abc123
submit.click() # 点击 立即登录 按钮
sleep(3) # 等待3秒
driver.quit() # 关闭浏览器
"""
打开首页,输入搜索关键字100,点击搜索按钮
等待两秒后,关闭浏览器
"""
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Firefox() # 启动浏览器
driver.get('http://localhost/upload/index.php') # 打开首页
# 定位搜索输入文本框 keyword
keyword = driver.find_element(By.ID,'keyword')
# 定位搜索按钮
imageField = driver.find_element(By.NAME,'imageField')
# 输入100
keyword.send_keys('100')
imageField.click()
sleep(2) # 等待2秒
driver.quit() # 关闭浏览器
"""
启动Firefox,打开ECshop前台留言板页
输入电子邮件地址:
输入主题:
输入留言内容:
等待3秒,关闭浏览器
"""
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Firefox() # 启动浏览器
driver.get('http://localhost/upload/message.php') # 打开前台留言板
# 定位元素
user_email =driver.find_element(By.NAME,'user_email')
msg_title =driver.find_element(By.NAME,'msg_title')
msg_content =driver.find_element(By.NAME,'msg_content')
# 元素操作
# 输入电子邮件地址:[email protected]
user_email.send_keys('[email protected]')
# 输入主题:selenium课程
msg_title.send_keys('selenium课程')
# 输入留言内容:不好学但是得学会
msg_content.send_keys('不好学但是得学会')
sleep(3) # 等待2秒
driver.quit() # 关闭浏览器
ID与NAME注意
- 如果有id属性的元素,尽量优先尝试使用ID定位
- 如果没有id属性,有name属性,尝试使用NAME定位
- 既有id属性又有name属性,优先使用ID定位
- 如果有id属性,但是ID定位失败,那么调查是否每次打开网页时,目标元素的id属性值是否不同,或刷新网页后,id属性之后就发生了变化,如果是,我们id属性值就是动态id属性值,此时不建议使用id定位