本帖最后由 源理 于 2018-12-22 10:24 编辑
9、FindElement 说明:返回符合by所查询元素机制的第一个元素 returnValue = instance.FindElement(by, timeout, raise) 以上的参数,除了by其它的都讲过,不重复了。这里的by是一个类,他是一种包含了查询元素的机制,他也包含了以前我们讲过的通过class、css、linkText、Name、PartialLinkText、Xpath来查询。 By的方法截图
05-01
他最主要的功能是有一个Any方法可以组合以上查询所得到的所有元素。 语法:returnValue = By.Any(by1, by2, by3,by4, by5, by6) 当然这个放到FindElements中会更有意义。 示例11:
演示by其中的id、PartialLinkText的示例说明by的用法,对比一下和以前讲过的FindElementByXXX发现其实是一样的。
05-02
- Sub 示例11()
- Dim cd As New ChromeDriver
- cd.Get "http://club.excelhome.net/forum-2-1.html"
- Dim by As New by '新建一个by类,在by类中可以构造自己定位方法如下
- Debug.Print "通过by.id方法获得元素:" & cd.FindElement(by.ID("mn_N2de8")).Text
- Debug.Print "通过FindElementById获得:" & cd.FindElementById("mn_N2de8").Text
- Debug.Print "##############################################"
- Debug.Print "通过by.id方法获得元素:" & cd.FindElement(by.partiallinktext("Excel 2016数据透视表应用大全")).Text
- Debug.Print "通过FindElementById获得:" & cd.FindElementByPartialLinkText("Excel 2016数据透视表应用大全").Text
- '通过以上两个示例可以看出通过by方法和FindElementByXXXX是一样的,by只是提供了一种定位的机制
- Stop
- cd.Quit
- End Sub
复制代码示例 12 通过by.any一次性抓取三个不相关的元素 效果
05-03
- Sub 示例12()
- Dim cd As New ChromeDriver
- cd.Get "http://club.excelhome.net/forum-2-1.html"
- Dim by As New by '新建一个by类,在by类中可以构造自己定位方法如下
- Set bt = by.Any(by.ID("mn_N2de8"), by.ID("mn_N3b30"), by.XPath("//td[@class='fl_icn']/following::td[1]")) '用了这个感觉就像是在点将台中点大将一样,很爽
- '上面第一个参数by构造了查询id为mn_N2de8的第一种机制(你叫条件也行)、
- '上面第一个参数by构造了查询id为mn_N3b30的第二种机制、
- '上面第一个参数by构造了查询XPath为
- '当程序解读dom时,当元素满足任意一个机制就被添加进 FindElements 中
- cd.FindElements(bt).Text.ToExcel Range("A1")
- Stop
- cd.Quit
- End Sub
复制代码
10、FindElementBy 说明:通过给定的策略和所对应的值来定位元素。 语法 returnValue = instance.FindElementsBy(strategy, value,minimum, timeout) 其中strategy是一个枚举型,他包含了所有的策略类型。其实也是我们上面所讲的一些方法 class、css、linkText、Name、PartialLinkText、Xpath、any.
下面是他的成员:
05-04
示例13
通过strategy的id和PartialLinkText查询元素,也做了一个对比自己看一下很简单
05-05
代码 - Sub 示例13()
- Dim cd As New ChromeDriver
- cd.Get "http://club.excelhome.net/forum-2-1.html"
- cd.FindElementBy Strategy.Strategy_Id, "mn_N2de8"
- Debug.Print "通过Strategy的id方法获得元素:" & cd.FindElementBy(Strategy.Strategy_Id, "mn_N2de8").Text
- Debug.Print "通过FindElementById获得:" & cd.FindElementById("mn_N2de8").Text
- Debug.Print "##############################################"
- Debug.Print "通过StrategyPartialLinkText方法获得元素:" & cd.FindElementBy(Strategy.Strategy_PartialLinkText, "Excel 2016数据透视表应用大全").Text
- Debug.Print "通过FindElementById获得:" & cd.FindElementByPartialLinkText("Excel 2016数据透视表应用大全").Text
- End Sub
复制代码
至此,所有关于定位元素的都讲完了。这里很重要!!!!!!!!!!!!是操作网络对象的基础!!!
|