022、xpath 定位01:基础语法

 

一、xpath 定位基础语法

Xpath定位 3 种形式:

  1、@属性定位

  2、父子层级定位

  3、索引 :索引是从下标1开始

*匹配任意标签  , // 表示相对路径;

 /:子节点    //  :相对节点  。

 

1、@属性定位  (属性定位,用@)

  <input name="username" id="username" type="text" value="" placeholder="请输入您的邮箱地址">  

   //*[@name="username"] , // 表示相对路径,* 代表所有标签,属性 name 用@
   //*[@name="username"],  表示的意思是:用相对路径,从所有标签种,找到含有name="username"的元素;

 

 

示例代码如下:

# -*- coding:utf-8 -*-
# Author:  Sky
# Email:   2780619724@qq.com
# Time:    2021/8/19 22:41
# Project: day01
# Module:  study_23.py
# Environment: Python3.8.6 , Selenium3 环境 ( 3.141.0 版本)
# Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本)

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://49.235.92.12:8200/users/login/")
time.sleep(3)

# //*[@name="username"]  , // 表示相对路径,* 代表所有标签,属性 name 用@
# //*[@name="username"],表示的意思是:用相对路径,从所有标签种,找到含有name="username"的元素;
# xpath 定位, name 属性
# 输入用户名
driver.find_element_by_xpath('//*[@name="username"]').send_keys("112233456@qq.com")

# xpath 定位, id 属性
# 输入密码
driver.find_element_by_xpath('//*[@id="password_l"]').send_keys("123456")

# xpath 定位, type 属性
driver.find_element_by_xpath('//*[@type="submit"]').click()

# xpath 定位, placeholder 属性
# driver.find_element_by_xpath('//*[@placeholder="请输入您的邮箱地址"]').send_keys("1234@qq.com")

driver.quit()

 

2、父子层级定位

  如果一个元素,无法直接定位,可以先定位它的父元素 。  /:子节点    //  :相对节点  。

 

示例代码如# -*- coding:utf-8 -*-

# Author:  Sky
# Email:   2780619724@qq.com
# Time:    2021/8/19 22:41
# Project: day01
# Module:  study_23.py
# Environment: Python3.8.6 , Selenium3 环境 ( 3.141.0 版本)
# Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本)

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://49.235.92.12:8200/users/register/")
time.sleep(3)

# 父子元素定位
# / 表示 层级关系, a[3] 表示第3个标签a元素
# driver.find_element_by_xpath('//*[@class="form-p"]/a[3]').click()

# 先到注册页面
# driver.find_element_by_xpath('//*[@class="form-p"]/a[1]').click()

# / 表示 层级关系
# 有多个input,没索引时,默认取值 input[1]
#
Xpath的索引是从下标1开始
driver.find_element_by_xpath('//*[@id="email_register_form"]/div[1]/input').send_keys("1235@qq.com")
# 相对节点 // ,表示在这个范围内。 # //*[@id="email_register_form"]//*[@type="password"] 的意思是: # 用相对路径,查找所有标签中 @id="email_register_form" 的元素,找到该元素后,再在该元素里,相对路径查找 所有标签中 @type="password" 的元素 driver.find_element_by_xpath('//*[@id="email_register_form"]//*[@type="password"]').send_keys("123456") time.sleep(3) driver.quit()

 

posted @ 2021-08-19 23:35  空-山-新-雨  阅读(155)  评论(0编辑  收藏  举报