在java中的3下拉列表中传递值
我需要做一个轮胎网站的爬虫。为此,我需要提取所有维度,然后在3个下拉列表中传递该维度,单击搜索按钮并提取每个产品的品牌名称和价格。然后返回到下一组尺寸并..重复,直到完成所有尺寸在java中的3下拉列表中传递值,java,selenium-webdriver,dropdown,Java,Selenium Webdriver,Dropdown,我需要做一个轮胎网站的爬虫。为此,我需要提取所有维度,然后在3个下拉列表中传递该维度,单击搜索按钮并提取每个产品的品牌名称和价格。然后返回到下一组尺寸并..重复,直到完成所有尺寸 for (int i = 0; i < tyreWidth.size(); i++) { String option1 = tyreWidth.get(i).getText(); dropdownWidth.selectByIndex(i);
for (int i = 0; i < tyreWidth.size(); i++) {
String option1 = tyreWidth.get(i).getText();
dropdownWidth.selectByIndex(i);
Thread.sleep(3000);
tyreSections = dropdownSection.getOptions();
for (int j = 0; j < tyreSections.size(); j++) {
String option2 = tyreSections.get(j).getText();
dropdownSection.selectByIndex(j);
Thread.sleep(3000);
tyreDiameter = dropdownDiameter.getOptions();
for (int k = 0; k < tyreDiameter.size(); k++) {
dropdownDiameter.selectByIndex(k);
Thread.sleep(3000);
driver.findElement(By.xpath(
".//*[@id='content-groesse']/div[3]/span[2]/button"))
.click();// search button
driver.findElement(By.xpath(
".//*[@id='bottomArticleCount']/ul/li[3]/button"))
.click();// search all oferts
driver.navigate().back();
driver.navigate().back();
Thread.sleep(1000);
listDimensions.add(option1 + " " + option2 + " "
+ tyreDiameter.get(k).getText());
System.out.println(option1 + " " + option2 + " "
+ tyreDiameter.get(k).getText());
}
tyreDiameter.removeAll(tyreDiameter);
}
tyreSections.removeAll(tyreSections);
}
for (int i = 0; i < listDimensions.size(); i++) {
writer.println(listDimensions.get(i));
}
writer.close();
}
for(int i=0;i
问题:这仅适用于第一组维度。有什么建议吗?谢谢。大部分代码看起来不错。我假设在更高的地方有一条线,类似于:
List<WebElement> tyreWidth = dropdownWidth.getOptions();
添加
clickOut()代码>在每个语句之后。选择ByIndex()
语句,在sleep()之前。这将导致下拉列表失去焦点,并可能导致二级和三级下拉列表正确填充。两个问题;1) 当你说“只对第一组有效”时,你是指一次迭代,还是指在第一次运行后出现错误?2) 您能否确认tyreWidth.size()>1
?如果没有HTML和如何定位元素,就会有很多黑框。在第一次运行后,下拉列表中的值会与原始值发生变化。打开页面时的值为(205,55,R16)。因此,在第一次迭代之后,下一组值就是原始值。我是一个初学者,我希望我的解释是清楚的
public void clickOut() {
driver.findElement(By.tagName("body")).click();
}