gpt4 book ai didi

java - 如何从下拉列表中选择所有列表选项循环选择每个选项并使用 selenium webdriver 单击提交按钮

转载 作者:行者123 更新时间:2023-12-01 13:30:41 27 4
gpt4 key购买 nike

这里是使用下拉菜单打印所有页面的名称和含义列的链接

尝试构建以下脚本:1. 前往http://babynames.merschat.com/index.cgi?function=Search&origin=Sanskrit&gender=f2. 将名称和含义列打印到syso。

我能够打印第 1 页,因为它是默认页面。这是代码:

公共(public)类 BabyNamesAndMeanings {

WebDriver driver = new FirefoxDriver();

@BeforeClass
public void setUp() {
driver.get("http://babynames.merschat.com/index.cgi?function=Search&origin=Sanskrit&gender=f");
driver.manage().window().maximize();
}

@Test
public void printBabyNamesAndMeaningsOfFirstPage() {
WebElement baby_names = driver
.findElement(By
.xpath("//tbody/tr[7]/td[3]/table[2]/tbody/tr[2]/td[2]/font/table[1]/tbody"));

List<WebElement> names = baby_names.findElements(By
.xpath("//tr/td[1]/font/a"));
List<WebElement> meanings = baby_names.findElements(By
.xpath("//tr/td[4]/font/a"));

for (int i = 0; i < names.size(); i++) {

System.out.println("Name: " + names.get(i).getText()
+ " Meaning: " + meanings.get(i).getText());
}

}

我不知道如何循环浏览页面底部下拉列表中的其余选项,并点击提交按钮来打印所有页面的名称和含义。有 100 多页。

提前致谢。

最佳答案

下面的代码将完成您的工作。

driver.get("http://babynames.merschat.com/index.cgi?function=Search&origin=Sanskrit&gender=f");
List<WebElement> pageOptions = new Select(driver.findElement(By.xpath("//select[@name='page']"))).getOptions();//Get all options in dropdown
ArrayList<String> pageDd = new ArrayList<String>();
for(WebElement eachPage:pageOptions){
pageDd.add(eachPage.getText());//Save text of each option
}
int i=1;
for(String eachVal:pageDd){
new Select(driver.findElement(By.xpath("//select[@name='page']"))).selectByVisibleText(eachVal);//Select page
driver.findElement(By.xpath("//input[@value='Go']")).click();//Click on go
List<WebElement> names = driver.findElements(By.xpath("//a[contains(@title,' meanings and popularity')]"));//Get all names on page
for(WebElement eachName:names){
String name = eachName.getText(); //Get each name's text
WebElement mean = eachName.findElement(By.xpath("./../../..//a[contains(@title,'Names for baby with meanings like ')]"));//Get meaning for that name
String meaning = mean.getText();//Get text of meaning
System.out.println(i+") Name: " +name+ " Meaning: " + meaning);//Print the data
i++;
}
}

尝试并理解实现需求的方式。如果您有任何疑问,请询问。

关于java - 如何从下拉列表中选择所有列表选项循环选择每个选项并使用 selenium webdriver 单击提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21587873/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com