Selenium+JQuery定位方法及应用

news/2024/7/11 0:50:56 标签: selenium, jquery, 测试工具, python, 自动化测试

Selenium+JQuery定位方法及应用

  • 1 JQuery定位说明
    • 1.1 JQuery定位方法
    • 1.2 JQuery最常用的三个操作
    • 1.3 JQuery一个示例
      • 1.3.1 用户名输入框
      • 1.3.2 密码输入框
      • 1.3.3 登陆按钮
      • 1.3.4 完整代码
  • 2 JQuery选择器
    • 2.1 常用选择器列表
    • 2.2 思考

1、关于Selenium提供了很多元素定位方法,这里不再赘述了。本文主要学习和了解JQuery的定位;
2、那为什么还要做JQuery进行定位呢?因为有的页面使用Selenium方法不能解决,所以可以尝试使用JQuery定位。

1 JQuery定位说明

1.1 JQuery定位方法

  • JQuery定位方法有两种:
python"># 1、使用JQuery选择器来完成元素操作(直接获取对应的元素);
# 2、使用JQuery遍历来选择元素(用于层级较为复杂的页面元素获取)。
  • JQuery语法:
python">$(selector).action()
  • JQuery通过$符号定义,selector主要用于获取基本的HTML元素,action()用于实现对获取元素的基本操作。

1.2 JQuery最常用的三个操作

  • $(selector).val("input_value")input_value为输入的文本信息;
  • $(selector).val(""):清空输入的内容;
  • $(selector).click():单击操作。

1.3 JQuery一个示例

  • 测试对象为禅道的登陆界面:
    在这里插入图片描述

1.3.1 用户名输入框

  • 页面源码:
python"><input class="form-control" type="text" name="account" id="account" autocomplete="off" autofocus="">
  • 在控制台中输入$("input")可以看到有3个内容,鼠标放到第一个,我们发现是用户名的输入框,如下:
    在这里插入图片描述
  • 那么说明用户名的选择器为:$("input:first")
    在这里插入图片描述

1.3.2 密码输入框

  • 页面源码:
python"><input class="form-control" type="password" name="password" autocomplete="off">
  • 同理可得密码的选择器为:$(":password");
    在这里插入图片描述

1.3.3 登陆按钮

  • 页面源码:
python"><button type="submit" id="submit" class="btn btn-primary" data-loading="稍候...">登录</button>
  • 选择器为:$(":button")时,显示两个按钮,其中第二个为登陆按钮:
    在这里插入图片描述
  • 那么登陆按钮的选择器为:$(":button")[1]:
    在这里插入图片描述

1.3.4 完整代码

python"># -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/13 
# 文件名称:test_zentao.py
# 作用:JQuery定位
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://localhost/zentao/user-login.html")
driver.implicitly_wait(10)

user_name = "$('input:first').val('admin')"
driver.execute_script(user_name)
time.sleep(0.5)

pass_wd = "$(':password').val('ZenTao123456')"
driver.execute_script(pass_wd)
time.sleep(1)

login_but = "$(':button')[1].click()"
driver.execute_script(login_but)
time.sleep(2)

driver.quit()

2 JQuery选择器

2.1 常用选择器列表

选择器示例说明
*$("*")所有元素
#id$("#name")id="name" 的元素
.class$(".xxxx")所有 class="xxxx" 的元素
element$("p")所有 <p> 元素
.class.class$(".name.zhang")所有 class="name"class="zhang" 的元素
:first$(“p:first”)第一个 <p> 元素
:last$("p:last")最后一个 <p> 元素
:even$("tr:even")所有偶数 <tr> 元素
:odd$("tr:odd")所有奇数 <tr> 元素
:eq(index)$("ul li:eq(2)")列表中的第三个元素(index 从 0 开始)
:gt(no)$("ul li:gt(2)")列出 index 大于 2 的元素
:lt(no)$("ul li:lt(2)")列出 index 小于 2的元素
:not(selector)$("input:not(:empty)")所有不为空的 input 元素
:header$(":header")所有标题元素
:animated所有动画元素
:contains(text)$(":contains('xxxx')")包含指定字符串xxxx的所有元素
:empty$(":empty")无子(元素)节点的所有元素
:hidden$("p:hidden")所有隐藏的 <p> 元素
:visible$("table:visible")所有可见的表格
s1,s2,s3$("th,td,.intro")所有带有匹配选择的元素
[attribute]$("[href]")所有带有 href 属性的元素
[attribute=value]$("[href='#']")所有 href 属性的值等于 "#" 的元素
[attribute!=value]$("[href!='#']")所有 href 属性的值不等于 "#" 的元素
:input $(":input")所有 <input> 元素
:text$(":text")所有 type="text"<input> 元素
:password$(":password")所有 type="password"<input> 元素
:radio$(":radio")所有 type="radio"<input> 元素
:checkbox$(":checkbox")所有 type="checkbox"<input> 元素
:submit$(":submit")所有 type="submit"<input> 元素
:reset $(":reset")所有 type="reset"<input> 元素
:button $(":button")所有 type="button"<input> 元素
:image$(":image")所有 type="image"<input> 元素
:file$(":file")所有 type="file"<input> 元素
:enabled $(":enabled")所有激活的 input 元素
:disabled$(":disabled")所有禁用的 input 元素
:selected$(":selected")所有被选取的 input 元素
:checked $(":checked")所有被选中的 input 元素

2.2 思考

  • 接之前的实例,登陆到禅道系统后,点击左边的【项目】:$(a[data-app='project']).click()
    在这里插入图片描述
  • 点击右上角的【创建项目】:$([href='/zentao/project-createGuide-0.html']:first)
    在这里插入图片描述
  • 点击【瀑布】模式:
    在这里插入图片描述
  • 看不能进入创建项目的界面:
    在这里插入图片描述
  • 此处代码省略,可自行尝试。

http://www.niftyadmin.cn/n/5177970.html

相关文章

Rust-使用dotenvy加载和使用环境变量

系统的开发&#xff0c;测试和部署离不开环境变量&#xff0c;今天分享在Rust的系统开发中&#xff0c;使用dotenvy来读取和使用环境变量。 安装 cargo add dotenvy dotenv_codegen 加载环境变量 use dotenvy::dotenv;fn main() {dotenv().expect(".env不存在");…

神经网络激活函数的使用

我们都知道神经网络模型中使用激活函数的主要目的是将非线性特性引入到我们的网络中&#xff0c;强化网络的学习能力。激活函数应用于隐藏层和输出层中每个节点的称为 z 的输入加权和&#xff08;此处输入可以是原始数据或前一层的输出&#xff09;。 在本篇文章中我们将讨论神…

LLaMA模型之中文词表的蜕变

在目前的开源模型中&#xff0c;LLaMA模型无疑是一颗闪亮的⭐️&#xff0c;但是相对于ChatGLM、BaiChuan等国产大模型&#xff0c;其对于中文的支持能力不是很理想。原版LLaMA模型的词表大小是32K&#xff0c;中文所占token是几百个左右&#xff0c;这将会导致中文的编解码效率…

本地跑项目解决跨域问题

跨域问题&#xff1a; 指的是浏览器不能执行其他网站的脚本&#xff0c;它是由浏览器的同源策略造成的&#xff0c;是浏览器对 javascript 施加的安全限制。 同源策略&#xff1a; 是指协议&#xff08;protocol&#xff09;、域名&#xff08;host&#xff09;、端口号&…

Skywalking流程分析_2(配置加载和自定义类加载器初始化)

读取配置 SnifferConfigInitializer.initializeCoreConfig(agentArgs)这个方法就是读取配置文件&#xff0c;agent.config的文件就是在此方法中读取的 public static void initializeCoreConfig(String agentOptions) {//开始进行加载配置信息 优先级(数字越小优先级越大) 1:…

2023--ICT网络赛道初赛题

以下内容来自考生回忆版&#xff0c;没有答案&#xff0c;也只有部分&#xff0c;欢迎各位讨论 1、某机房没有合适长度的网线&#xff0c;现需手工制作一个568B标准的双绞线&#xff0c;那么应按照以下哪一线序进行制作? A.绿白,绿&#xff0c;蓝&#xff0c;蓝白&#xff0c…

Vmware虚拟机重装 虚拟机能ping通主机,而主机不能ping通虚拟机的问题

CClean&#xff0c;用它把你电脑上已经卸载的软件但是注册表还没删干净的把注册表删干净&#xff0c;之前说的那种情况&#xff08;虚拟网络编辑器打不上勾&#xff09;就迎刃而解了。 Ps&#xff1a;CClean&#xff1a;再网上百度就可以查到&#xff0c;软件对用户也很友好&a…

设计模式-03-建造者模式

经典的设计模式有23种&#xff0c;但是常用的设计模式一般情况下不会到一半&#xff0c;我们就针对一些常用的设计模式进行一些详细的讲解和分析&#xff0c;方便大家更加容易理解和使用设计模式。 1-为什么需要建造者模式 我们直接使用构造函数或者配合set方法就能创建对象&a…