CLASS_NAME定位
-
html语法里class属性
-
class属性规定元素的类名(classname),如需为一个元素规定多个类,用空格分隔类名
-
html里的类一般是用于统一设置控件的样式,对文字排版等比较有用
<标记 class='类名1 类名2'>
-
-
WebDriver提供的CLASS_NAME定位用于定位某类的元素,find_element方法返回一个特定类名的页面元素对象
# 语法 变量 = driver.find_element(By.CLASS_NAME,"类名")
""" 启动Firefox,打开ECshop前台首页,在左下角订单查询区,输入订单号2009061909851,点击查询该订单按钮,等待3秒,关闭浏览器 """ 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') # 前台首页 # 定位元素 inputBg = driver.find_element(By.CLASS_NAME,'inputBg') bnt_blue_2= driver.find_element(By.CLASS_NAME,'bnt_blue_2') # 元素操作 inputBg.send_keys('2009061909851') bnt_blue_2.click() sleep(3) # 等待3秒 driver.quit() # 关闭浏览器
""" 启动Firefox,打开ECshop前台首页,点击 留言板,输入电子邮件地址,输入主题,输入留言内容 等待2秒,点击我要留言,等待5秒关闭浏览器 """ 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') # 前台首页 # 定位元素及操作 driver.find_element(By.LINK_TEXT,'留言板').click() driver.find_element(By.NAME,'user_email').send_keys('[email protected]') driver.find_element(By.NAME,'msg_title').send_keys('测试') driver.find_element(By.NAME,'msg_content').send_keys('测试') sleep(2) # 等待3秒 driver.find_element(By.CLASS_NAME,'bnt_blue_1').click() sleep(5) driver.quit() # 关闭浏览器
TAG_NAME定位
-
HTML本质就是tag(标记)来定义实现网页上不同的控件,每个元素就是一个标记表示的信息
<textarea cols="50" rows="4"></textarea>
-
WebDriver提供的TAG_NAME定位,就是使用标记名称定位,find_element方法返回一个特定标记名的页面元素对象
# 语法 变量 = driver.find_element(By.TAG_NAME,'标记名') # 示例 mycommone = driver.find_element(By.TAG_NAME,'textarea')
""" 启动Firefox,打开ECshop前台首页,点击 留言板,输入电子邮件地址,输入主题,输入留言内容 等待2秒,点击我要留言,等待5秒关闭浏览器 """ 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') # 前台留言板 mycommone = driver.find_element(By.TAG_NAME,'textarea') mycommone.send_keys("12345") sleep(2) # 等待3秒 driver.quit() # 关闭浏览器
说明:
(1)CLASS_NAME和TAG_NAME定位时,因为符合条件的元素可能不止一个,所以定位可能不准确,尽量少用。
(2)CLASS_NAME使用class属性值里的类名来定位,如果有空格,就是多个类名,使用其中一个进行定位。
(3)定位时,定位错了元素,不会报错。