Selenium获取元素的HTML和子元素的方法
摘要
本文主要解决如下3个问题: |
Selenium怎么获取一个元素的HTML源代码
假设需要获取id为articleList的元素的HTML源代码,有两种方法:
方法一
WebElement subTag=driver.findElement(By.id("articleList")); |
方法二
WebElement element = driver.findElement(By.id("articleList")); |
相比较而言,方法一更为简洁。
Selenium怎么获取元素下的子元素
Selenium提供了以下8个方法来查找页面中的1个元素:
Selenium方法 | Java方法 |
---|---|
find_element_by_id | driver.findElement(By.id()) |
find_element_by_name | driver.findElement(By.name()) |
find_element_by_xpath | driver.findElement(By.xpath() |
find_element_by_link_text | driver.findElement(By.linkText() |
find_element_by_partial_link_text | driver.findElement(By.partialLinkText() |
find_element_by_tag_name | driver.findElement(By.tagName() |
find_element_by_class_name | driver.findElement(By.className() |
find_element_by_css_selector | driver.findElement(By.cssSelector() |
以下7个方法来查找页面中的多个元素(这些方法将返回一个列表):
Selenium方法 | Java方法 |
---|---|
find_elements_by_name | driver.findElements(By.name()) |
find_elements_by_xpath | driver.findElements(By.xpath() |
find_elements_by_link_text | driver.findElements(By.linkText() |
find_elements_by_partial_link_text | driver.findElements(By.partialLinkText() |
find_elements_by_tag_name | driver.findElements(By.tagName() |
find_elements_by_class_name | driver.findElements(By.className() |
find_elements_by_css_selector | driver.findElements(By.cssSelector() |
上述方法都是查找页面中的元素的,那么怎么获取一个元素下的子元素呢?其实和获取页面元素类似,以获取parentElement元素下的所有a标签为例:
List<WebElement> aTags = parentElement.findElements(By.tagName("a")); |
还有一种是根据xpath查找子元素的方法
代码示例:
//页面上class=ReactVirtualized__Grid__innerScrollContainer的div元素下有多个/div/div结构,查找/div/div结构下的子元素 |
总结:获取页面元素的15个方法都可以用来获取元素下的子元素。
Selenium怎么获取判断元素是否存在
Selenium 中并没有直接判断元素是否存在的方法,只能通过变通的方式判断。
方法一
调用findElement方法获取元素,如果抛出异常,就可以判断为元素不存在。
try { |
方法二
通过判断元素个数的方式来判断。
WebDriver的findElements()返回一个List
/** |
显然,相比抛异常进行判断,方法二更为合适,可以直接写进工具类里方便调用。
Selenium通过子元素来查找/定位父元素
selenium通过父元素来找子元素的方式 很简单,但是反过来 如果通过子元素来找父元素 就不一样了 有的场景是需要通过子元素来找父元素
直接上代码
这个时候该怎么做呢 我们可以通过获取文本的内容进行定位向上找 (//..) 这个是上一级
driver.findElementByXpath('xpath', '//*[text()="北京分公司"]//..//../span') |
这个时候定位的目标就在
就找到父元素了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 叶落花开的博客!
评论