捕获div类中的元素

时间:2018-11-21 09:51:36

标签: java arrays selenium selenium-webdriver webdriver

下面是相同的代码

<section id=“zone_body” class =“zone zone_body>

<div class =“row”>…<div>

<div data-o_id="4915279" data-renderertype="imagesonly" class="module module-carousel module-carousel--imagesonly col col--1-1" id="module-2319657">

::after

</div>

<div class =“row”>…<div>

<div class =“row”>…<div>

<div class =“row”>…<div>

<div class =“row”>…<div>

<div class =“row”>…<div>

<div class =“row”>…<div>

<div class =“row”>…<div>


</section>

我正在测试一个网页,试图通过Java使用Selenium来实现自动化。根据我正在测试的每个页面上方的html代码,都具有该标准的16种不同类型的data-renderertype,并且根据体内的8种不同的div类之上的代码,它们可以具有相同或不同的data-renderertype,例如上面有“ imagesonly”,并且可以任意顺序排列。我真正想要实现的是从所有8个不同的div类中提取所有的data-renderertype值(这不是一个常数,因为它可能因页面而异),因此可以将其存储并用于将其与网站的其他版本。我希望这是有道理的,任何帮助将不胜感激,因为我现在不知所措,又不确定从哪里开始。

4 个答案:

答案 0 :(得分:0)

您可以这样做逻辑,

List<IWebElement> elements= driver.findElements(By.XPath("*//div[data-renderertype]"));

List<IWebElement> elements= driver.findElements(By.XPath("*[data-renderertype]"));

List<IWebElement> elements = driver.findElements(By.XPath("*//div[starts-with(@id,'module')]"));
forEach(IWebElement ein elements){
    string str = e.getAttribute("data-renderertype");
}

答案 1 :(得分:0)

尝试一下:

List<WebElement> allRows = driver.findElements(By.cssSelector("#zone_body > div.row"));

for( WebElement elem : allRows ){

   System.out.println("Value=== " + elem.getAttribute("data-renderertype"));
}

答案 2 :(得分:0)

我要做的是:

  1. 使用Thrust;Thrust;BBC Micro;;;;;;;;;;;;;; Alien Breed Special Edition '92;Alien Breed Special Edition '92;Amiga;;1992;Team 17;Action / Shooter;;;;;;;;;; amidar;amidar;Arcade-Vertical;;;;;;;;;;;;;; mspacman;mspacman;Arcade-Vertical;;;;;;;;;;;;;; 获取项目(请注意,为确保Selenium脚本的稳定性和可维护性,需要仔细选择XPath)
  2. 流式处理列表,并对每个元素使用List<WebElement> divs = driver.findElements(By.xpath("#zone_body .row")),填充新列表或地图或所需的任何数据类型。

答案 3 :(得分:0)

List<WebElement> elements = driver.findElements(by.xpath("//section[@id='zone_body']//div[@class='row']"));
for(int i=0;i<elements.size();i++) {
    System.out.println( elements.get(i).getAttribute("data-renderertype"));
}

此代码段将<div class='row'/>标记下的所有<section id='zone_body' />元素放入元素列表,并使用for循环迭代该列表以获取属性data-renderertype的值。