Java 捕获div类中的元素
下面是相同的代码Java 捕获div类中的元素,java,arrays,selenium,selenium-webdriver,webdriver,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-231965
<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>
…
::之后
…
…
…
…
…
…
…
我正在测试一个web页面,我正试图使用selenium和Java实现该页面的自动化。根据上面的html代码,我正在测试的每个页面都有这个标准16种不同类型的数据呈现器类型,根据上面的代码,体内8个不同的div类可以有相同或不同的数据呈现器类型,例如上面的“imagesonly”可以是任意顺序。我真正想要实现的是从所有8个不同的div类中提取所有数据renderType值(这不是一个常数,因为它可以根据页面的不同而变化),这样就可以存储它并用于将其与站点的不同版本进行比较。我希望这是有意义的,任何帮助都将非常感谢,因为我现在不知所措,不知道从哪里开始。你可以这样理解逻辑
List<IWebElement> elements= driver.findElements(By.XPath("*//div[data-renderertype]"));
List elements=driver.findElements(By.XPath(“*//div[data rendertype]”);
或
List elements=driver.findElements(By.XPath(“*[data RenderType]”);
或
List elements=driver.findElements(By.XPath(“*//div[以(@id,'module')]开头]);
forEach(IWebElement元素){
string str=e.getAttribute(“数据呈现器类型”);
}
试试这个:
List<WebElement> allRows = driver.findElements(By.cssSelector("#zone_body > div.row"));
for( WebElement elem : allRows ){
System.out.println("Value=== " + elem.getAttribute("data-renderertype"));
}
List allRows=driver.findElements(By.cssSelector(“#zone_body>div.row”);
for(WebElement元素:所有行){
System.out.println(“Value==”+elem.getAttribute(“数据渲染器类型”);
}
我要做的是:
List divs=driver.findelelements(By.xpath(“#zone_body.row”)
获取项目(请注意,出于Selenium脚本稳定性和可维护性的考虑,需要仔细选择xpath)WebElement.getAttribute(“数据呈现器类型”)
,填充新列表或地图或任何您想要的数据类型List elements=driver.findElements(by.xpath(//section[@id='zone\u body']//div[@class='row']);
对于(int i=0;ido,其中id总是以name module开头,即id=“module……”是的,它们总是id=“module xxxx”@AshishKambleok,然后使用By.XPath(*//div[以(@id,'module')]开头)@Ajit不是提供定制的HTML,而是使用基于文本的实际相关HTML更新问题以供进一步分析。这就是我得到的值===null值====null值====null值===null值===null值===null值===null值===null是否尝试相同的代码,用“id”替换“data rendertype”并共享结果
List<IWebElement> elements = driver.findElements(By.XPath("*//div[starts-with(@id,'module')]"));
forEach(IWebElement ein elements){
string str = e.getAttribute("data-renderertype");
}
List<WebElement> allRows = driver.findElements(By.cssSelector("#zone_body > div.row"));
for( WebElement elem : allRows ){
System.out.println("Value=== " + elem.getAttribute("data-renderertype"));
}
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"));
}