首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

vba selenium获取按类查找元素时不允许的复合类名

VBA Selenium是一种用于自动化测试的工具,它可以模拟用户在网页上的操作,例如点击按钮、填写表单等。在使用VBA Selenium时,有时候需要按类名来查找元素,但是有些情况下,复合类名是不被允许的。

复合类名是指一个元素的class属性值包含多个类名,类名之间使用空格分隔。例如,一个元素的class属性值为"btn btn-primary",其中"btn"和"btn-primary"是两个类名。

在VBA Selenium中,按类名查找元素的方法是使用FindElementsByClassNameFindElementByClassName,这两个方法接受一个类名作为参数来查找元素。但是,如果传入的类名是一个复合类名,即包含空格的类名,VBA Selenium会抛出一个错误,提示不允许使用复合类名。

为了解决这个问题,可以使用其他方式来定位元素,例如使用CSS选择器或XPath。CSS选择器是一种通过元素的属性、标签名、层级关系等来选择元素的方法,而XPath是一种通过元素的路径来选择元素的方法。这两种方法都可以实现按类名查找元素,并且支持复合类名。

以下是一个示例代码,演示如何使用CSS选择器来按类名查找元素:

代码语言:txt
复制
Dim driver As New SeleniumWrapper.WebDriver
driver.Start "chrome", "https://example.com"

Dim element As SeleniumWrapper.WebElement
Set element = driver.FindElementByCssSelector(".btn.btn-primary")

element.Click

driver.Quit

在上述示例中,通过.btn.btn-primary这个CSS选择器来查找包含"btn"和"btn-primary"两个类名的元素,并进行点击操作。

总结一下,VBA Selenium在按类名查找元素时不允许使用复合类名,但可以通过使用CSS选择器或XPath来解决这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python使用Selenium模拟浏览器输入内容和鼠标点击

本文介绍Python调用Selenium实现模拟浏览器输入和点击步骤和方法,并给出最易出现BUG解决办法 ? 一、安装Selenium pip install Selenium ?.../index.html (注意:运行代码如果没有下载与自己浏览器版本匹配 chromedriver.exe 放到代码同级目录下, 会报错: selenium.common.exceptions.WebDriverException...selector: Compound class names not permitted 消息:无效选择器:不允许使用复合 原因分析: 我们通过F12从浏览器获取html元素class name...中间有空格,所以提示我们:不合法,不允许 解决方法: 方法1.html元素class name中间空格是表示父级和子级关系,我们调用以上方法,使用最后一段就可以了 如选择html...标签(btn-search和tb-bg中间有空格) 但是要确认tb-bg不是被很多个标签重复使用,能确保选择到自己要选那个标签 方法2.webdriver有很多方法,使用其他方法:

4.4K30

多语言自动化测试框架 Selenium 编程(C#篇)

下面这个示例中,包括了打开页面、查找元素、填充内容和获取信息代码,读者可以运行这段代码从中了解编写自动化测试程序基本执行流程,更多细节将在后面的小节中讲解。...WebDriver 会等待路径 //a/h3 元素出现,最大等待时间为 10s。 而通过隐式等待,WebDriver 在试图查找_任何_元素在一定时间内轮询DOM。...当网页上某些元素不是立即可用并且需要一些时间来加载是很有用。 隐式等待是告诉 WebDriver 如果在查找一个或多个不是立即可用元素轮询 DOM 一段时间。...用户可以配置等待来忽略等待出现特定类型异常,例如在页面上搜索元素出现NoSuchElementException: WebDriverWait wait = new WebDriverWait...在 WebDriver 中有 8 种不同内置元素定位策略: 定位器 Locator 描述 class name 定位class属性与搜索值匹配元素不允许使用复合) css selector

3K20

软件测试|Selenium常见api

("https://www.baidu.com/")# 打印百度title(百度一下,你就知道)title = driver.titleprint(title)driver.title获取当前页面源码...(page_source)driver.page_source控件元素定位 APISelenium提供了八种定位方式:https://www.selenium.dev/documentation/webdriver...(不允许使用复合)css selector定位 CSS 选择器匹配元素xpath定位与 XPath 表达式匹配元素tag name定位标签名称与搜索值匹配元素link text定位link text..."//*")# 查找页面上面所有的div标签节点$x("//div")# 查找id属性为site-logo节点$x('//*[@id="site-logo"]')# 查找节点父节点$x('//*[@...@value='text'选取所有value属性为text元素//标签名@属性='属性值' and @属性='属性值'//input@name='passward' and @pwd='123456

61410

九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、鼠标操作)

3.通过XPath定位元素 4.通过连接文本定位超链接 5.通过标签名定位元素 6.通过定位元素 7.通过CSS选择器定位元素 四.常用方法和属性 1.操作元素方法 2.WebElement常用属性...如利用name属性来查找方法是find_element_by_name,这里通过该方法来定位百度输入框,即审查元素name为“wd”节点。...这也体现了XPath方法一个优点: 当没有一个合适ID或Name属性来定位所要查找元素,你可以使用XPath去定位这个绝对元素(但作者不建议定位绝对元素),或者定位一个有ID或Name属性相对元素位置...(‘p’) ---- 6.通过定位元素 该方法是通过类属性(Class Attribute Name)定位元素,它将返回第一个用类属性匹配定位元素。...):将鼠标光标移动到元素elem上 click_and_hold(elem):下鼠标左键并悬停在元素elem上 perform():执行ActionChains存储操作,弹出对话框 下面的示例代码是定位百度

4.4K10

selenium源码通读·2 | commonexceptions.py异常

:1、找不到元素引发2、如果遇到此类异常,可能需要检查以下内容:A、检查find_by中使用选择器;B、元素查找操作可能尚未出现在屏幕上,(网页仍在加载)请参阅selenium。...占位NoSuchWindowException当要切换窗口目标不存在抛出,要查找当前活动窗口句柄集,可以获取一个列表以下方式创建活动窗口句柄:print driver.window_handlespass...占位 NoSuchElementException找不到元素引发,如果遇到此类异常,可能需要检查以下内容:A、检查find_by中使用选择器;B、元素查找操作可能尚未出现在屏幕上,(网页仍在加载...当目标提供给'ActionsChains' move()抛出方法无效,即超出文档范围pass占位 UnexpectedTagNameException当支持获取预期web元素引发pass占位...InvalidSelectorException用于查找元素选择器未返回引发一个网络元素

1.4K50

Office文件打开密码测试工具

从hash 次数来看: 03版本(xls、doc、ppt等后缀),每秒38万测试速度,如果是纯数字密码,那么10位数字内密码,总数100亿,大概要7小。...66个的话,大概要4小。...工具左边是个树形目录,展示复合文档结构,Office文件加密后都是保存为复合文档,后续看情况把复合文档一些解析功能也加进来,比如VBAProject里介绍VBA模块代码提取、模块隐藏等。...工具获取密码方式目前提供了2种: 一种是输入元素进行排列组合获取元素空格隔开,可以是多个字符元素,比如[0 1 aa xiong 2],这表示5个元素;排列组合选择数量可以输入多个,比如可能是元素...获取方式: 在微信公众号回复oct获取

71120

「Python爬虫系列讲解」八、Selenium 技术

3 定位元素 3.1 通过 id 属性定位元素 3.2 通过 name 属性定位元素 3.3 通过 XPath 路径定位元素 3.4 通过超链接文本定位元素 3.5 通过标签名定位元素 3.6 通过定位元素...当定位多个元素,只需将方法 “element” 加 “s” ,这些元素将会以一个列表形式返回。...这也体现了 XPath 方法一个优点,即当没有一个合适 id 或 name 属性来定位所需要查找元素,可以使用 XPath 去定位这个绝对元素(但不建议定位绝对元素),或者定位一个有 id 或...3.6 通过定位元素 通过类属性(Class Attribute Name)定位元素将返回第一个用类属性匹配定位元素。...方法 含义 size 获取元素尺寸 text 获取元素文本 location 获取元素坐标,先找到要获取元素,再调用该方法 page_source 返回页面源码 title 返回页面标题 current_url

6.9K20

如何在Selenium WebDriver中查找元素?(一)

Selenium WebDriver中查找元素:“ FindElement”和“ FindElements”之间区别 查找元素 查找元素 如果定位器发现了多个Web元素,则返回第一个匹配Web元素...有多种方法可以唯一地标识网页中一个Web元素,例如ID,名称,,链接文本,部分链接文本,标记名和XPATH。...名称查找 此方法类似于“ID查找”,不同之处在于驱动程序将尝试通过“名称”属性而不是“ id”属性来查找元素。...类别名称查找 此方法根据CLASS属性查找元素。更适用于查找具有针对它们定义css多个元素。 句法: driver.findElements(通过。...标签名称查找 此方法根据元素HTML标记名称查找元素

5.9K10

Web 自动化:一种基于 Page Object 实现及常见异常处理

为了在页面Class里更好管理定位器和减少元素查找代码量,Selenium提供了PageFactory,使得我们在实现页面只需要用注解描述元素定位即可。...调用元素各个方法,工厂会自动根据定位器实时查找元素,在减少代码量同时还能够帮忙避免DOM刷新带来不稳定,详细使用见selenium官网。...1、查找元素遇到NoSuchElementException 出现此问题一般是因为Selenium查找操作在元素加载之前就已经结束。...如果被测产品控件提供返回控件方法,ControlFinder可以在查找元素后,用javascript调用该方法返回控件名称,然后通过反射返回对应控件实例。...1)如果元素查找获取元素文本都发生在DOM刷新之前,那么获取文本是刷新前文本,循环继续。 2)如果DOM刷新发生在元素查找获取元素文本之间,则抛出异常。

2.5K00

《手把手教你》系列技巧篇(二十)-java+ selenium自动化测试-元素定位大法之终卷(详细教程)

)) 使用页面元素name属性 className driver.findElement(By.className(String class)) 使用页面元素属性 tagName driver.findElement...Xpath性能应该是最慢。 3.link text、partial link text缺点在于只对连接元素起作用。 4.class name不支持复合元素。...通过id获取 document.getElementById(“id”) 通过name获取 document.getElementsByName(“Name”) 返回是list 通过标签名选取元素 document.getElementsByTagName...->鼠标右键->检查->Elements->Ctrl+F 5.小结 总共有8种方法,但是在实际运用中,我们一定要合理使用,以下方法进行选择 1.当页面元素有id和name属性,最好尽量用id和name...1)打开一个新标签,并导航到你最喜欢网页。 2)Ctrl-Shift键-X以打开XPath辅助控制台。 3)按住Shift键鼠标在页面上元素

1.6K20

​Java自动化测试 (元素定位 23)

基础定位方式 id 根据id来获取元素,id唯一性 name 根据元素name熟悉来获取元素,会存在不唯一情况 tagName 根据元素标签名来获取元素,一般不建议使用 className 根据元素样式名来获取元素...,会存在不唯一性,注意复合问题 linkText 根据超链接全部文本值来获取元素 partialLinkText 根据超链接部分文本值来获取元素(模糊匹配) 代码封装 之后例子都会使用到open...下面是使用它方法: 元素定位 使用浏览器自带定位工具进行元素定位 ? 元素定位 初步获取Xpath ?...假如我们需要获取是一个元素列表,那就可以进行删减 将它删减为://*[@id="dashboard"]/div/div[3]/div//a可以发现页面中标黄都是定位到部分内容,「RESULTS(...; // 全匹配 By.xpath("//*[contains(text(),'忘记密码')]");// 模糊匹配 Xpath 轴定位 当某个元素各个属性及其组合都不足以定位

1K30

VFP调用Selenium入门篇(一)

我手头上selenium 是2021-‎07-‎04年SeleniumBasic 3.141.0.0。...我们可以认为“Selenium”它最大贡献就是在于把原来java、c#、python才能玩东西,VFP同样能搞,因为它支持浏览器非常多:Chrome、Firefox、Microsoft Edge、...目录下, 然后下载Selenium,运行RegAsm.bat(与regsvr32似,熟悉朋友应该都知道C#开发出来DLL都是用它注册DLL,VFP才能调用) 会看到7个文件,功能如下: •...SeleniumBasic.dll和SeleniumBasic.tlb:这两个是类型库,提供了VBA环境中用到SeleniumBasic命名空间中对象、成员。...当你不再需要V3,用管理员权限运行这个bat,可以从注册表中移除写入内容。相当于软件卸载。

1.9K30

illenium什么水平_尼采读本

名称值去定位查找单个元素 class_name: 需要被查找元素 find_element_by_class_name('input-text') tag_name 该方法通过tag名称值去定位查找单个元素...名称值去定位查找多个元素 class_name: 需要被查找元素 find_elements_by_class_name('input-text') tag_name 该方法通过tag名称值去定位查找多个元素...事实上,通过ID,name或者class name查找元素是最提倡推荐和最快方式。...依据标签名tag name查找 利用标签方法类似于利用等方法进行查找。我们可以轻松查找出一系列具有相同标签名元素。例如我们可以通过查找表中获取行数。...Page Object模式是Selenium一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试元素(按钮,输入框,标题等),这样在Selenium测试页面中可以通过调用页面获取页面元素

3.5K20

Selenium入门介绍

/ 驱动特性 等待 浏览器在加载页面需要一定时间,因此在Selenium中定位页面元素也需要一定等待时长,已确保页面被正常加载完毕并且可以定位到目标元素。...1.元素ID定位 # 只定位一次目标元素 driver.find_element(By.ID, "cheese") # 先定位到父元素,再缩小查找范围继续ID定位元素 cheese = driver.find_element...Class名称中包含指定值元素,注意:传递参数不能是一个复合class,如:'clazz1 clazz2' driver.find_element(By.CLASS_NAME, 'clazz1')...定位多个元素 在定位多个元素跟定位单个元素使用相同策略,不同之处在于返回值不再是单个元素,而是一个元素列表。...# 定位多个元素返回一个列表,如果定位到元素只有一个,也是返回一个列表(此时列表元素个数为1) # 如果没有找到目标元素,则返回一个空列表 mucho_cheese = driver.find_elements

2.4K30

使用c#和selenium获取网页

图片selenium 和 c# 应用之一是创建一个网络爬虫,它可以从网页中抓取数据进行分析。网络爬虫是一种访问网页并从中提取信息程序。...Selenium 是一个框架,它允许我们自动执行浏览器操作,例如单击、键入或导航。 C# 是一种编程语言,可用于编写网络爬虫逻辑和功能。...为避免被 Web 服务器阻止,我们可以使用代理 IP 地址来掩盖我们身份和位置。要访问网页上元素,我们可以使用通过 id、名称、或 xpath 获取元素等方法。...ID查找元素 IWebElement elementById = driver.FindElement(By.Id("element-id")); // 使用元素名称查找元素...IWebElement elementByName = driver.FindElement(By.Name("element-name")); // 使用查找元素

75410

python爬虫开发之selenium模块详细使用方法与实例全解

模拟浏览器进行网页加载,当requests,urllib无法正常获取网页内容时候 一、声明浏览器对象 注意点一,Python文件或者包不要命名为selenium,会导致无法导入 from selenium...') print(browser.page_source)#browser.page_source是获取网页全部html browser.close() 三、查找元素 单个元素 from selenium...browser.find_element_by_xpath('//*[@id="q"]') print(input_first,input_second,input_third) browser.close() 常用查找方法...操作 frame相当于独立网页,如果在父网frame查找子类,则必须切换到子类frame,子类如果查找也需要先切换 from selenium import webdriver from selenium.common.exceptions...,如果 WebDriver没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素异常, 换句话说,当查找元素元素并没有立即出现时候,隐式等待将等待一段时间再查找 DOM,默认时间是

1.8K10

Selenium 系列篇(二):元素定位

Selenium WebDriver API 中提供了大量方法帮助我们进行元素定位。 2. 常用方式 Selenium 常用元素定位方式包含:id、name、class。...打开目标网页, F12 键打开开发者调试工具,定位到元素标签,如果存在 id 、name、class 属性,就可以使用 id 、name、class 中其中一个来定位到元素, ?...,即使要查找元素。...By + elements Selenium 提供查找方法还提供了另外一种形式,即通过:By( 定位方式,定位内容值 ) 实际上,对自动化做 Page Object 设计 时候,一般都会用 By 方式来封装代码...使用方式如下: # 1、导入依赖 from selenium.webdriver.common.by import By # 2、使用 driver.find_element(By.ID, "element_id

2.2K32
领券