本帖最后由 源理 于 2018-12-19 22:46 编辑
示例8 效果 代码 Sub 示例8() Dim cd As New ChromeDriver cd.Get "http://www.excelhome.net/" Dim element As WebElement '类型选择器,选择第一个li Set element = cd.FindElementByCss("li", 3000, True) Debug.Print element.Text Debug.Print "=======类型选择器==========" 'ID选择器,选择ID为five2的li元素 Set element = cd.FindElementByCss("li#five2", 3000, True) Debug.Print element.Text 'class选择器,选择class为header的div元素 Set element = cd.FindElementByCss("div.header") Debug.Print element.Text Debug.Print "=======class选择器==========" '包含选择器,选择class为header的div元素,再选择div里面li元素,再反选li里面的a元素 Set element = cd.FindElementByCss("div.header li a") Debug.Print element.Text Debug.Print "========包含选择器=========" '子选择器,选择class为header的div元素,再选择div子元素中的ul元素,再选择ul的子元素li,再选择li中的a元素 '注意区别,这个是子元素,上面那个包含可以是孙元素,从孙元素 Set element =cd.FindElementByCss("div.header>ul>li>a") Debug.Print element.Text Debug.Print "========子选择器=========" '相邻选择器,选择id为xxx的div元素,再选择div的script子元素,选择script子元素后最近的ins '注意最后一个为相邻选择器 Set element = cd.FindElementByCss("div#xxx>script+ins") Debug.Print element.Attribute("id") Debug.Print "========相邻选择器=========" '兄弟选择器,选择class为menu的ul元素,再选择ul的子元素li,选择li子元素兄弟元素li, '与相邻选择符不同的是,兄弟选择符会命中所有符合条件的兄弟元素,而不强制是紧邻的元素。 Set element = cd.FindElementByCss("ul.menu>li~li") Debug.Print element.Text Debug.Print "========兄弟选择器=========" cd.Quit End Sub 代码解释已在代码中写了
总结一下上述代码中选择器的语法 类型选器:直接写元素的标签 css中用 E表示 id选择器:E#id id的字符串 class选择器:E.class class的字符串 包含选择器: E F 空格 F表示另一个标签 子选择器:E>F 相领选择器:E+F 兄弟选择器:E~F 其它选择器语法请查Css文档很全。 小技巧
如何快捷验证我们所写的选择器,难道一直写到VBA中然后跑代码吗?不是这样的,可以在网上下载一些插件。当然我用的是谷哥的开发人员工具。使用方法按F12打开开发人员工具,在Elements选择卡中(即dom树中)按ctrl+f,会出现一个搜索框,这里就可以用来验证CSS选择器.当然后面用到Xpath也可以在这里验证。下面是一个验证截图。 未完待续。。。。。。 |