使用seleniumjava,我想自动化一个调查页面.问题产生于一个带有几个子问题的问题



使用selenium java,我想自动化一个调查页面。每个问题都有相同的HTML代码。问题产生于一个带有几个子问题的问题。每个子问题都有相同的HTML代码。

我想做什么?我试图依靠";name";以及";值";。完成后;继续";按钮显示定位器

@FindBy(xpath = "//input[@name='select-12'][0]")
WebElement question10;
@FindBy(xpath = "//input[@name='select-12'][1]")
WebElement question10a;
@FindBy(xpath = "//input[@name='select-12'][2]")
WebElement question10b;
@FindBy(xpath = "//input[@name='select-12'][3]")
WebElement question10c;
@FindBy(xpath = "//input[@name='select-12'][4]")
WebElement question10d;
@FindBy(xpath = "//input[@name='select-12'][5]")
WebElement question10e;
@FindBy(xpath = "//input[@name='select-12'][6]")
WebElement question10f;

//executor.executeScript("arguments[0].click();", question10);
//        JavascriptExecutor js = (JavascriptExecutor) driver;
//        js.executeScript("window.scrollBy(0,200)", "");
//executor.executeScript("arguments[0].click();", question10a);
executor.executeScript("arguments[0].click();", question10b);
executor.executeScript("arguments[0].click();", question10c);
executor.executeScript("arguments[0].click();", question10d);
executor.executeScript("arguments[0].click();", question10e);
executor.executeScript("arguments[0].click();", question10f);
executor.executeScript("arguments[0].click();", question11);
disclaimer.click();
continua.click();

页面HTML代码:HTML

被质疑的图片:问题图像

我怎样才能完成这个问题?

问题标题不同,例如:

a. Activitati cotidiene si activitati ce tin de locul tau de munca

b. Hobiuri si activitati sportive

根据标题,我们可以区分xpath(下面的xpath是第一个问题(:

//strong[contains(text(), 'a.')]/../descendant::input[@value='0']/..

对于第二个或第三个问题,你所要做的就是将问题标题代替a.改为特定的问题标题,如b.,依此类推

如果你想点击0,那么就保持它是input[@value='0'],但如果你想单击1, 2, 3,或任何其他号码,你必须在这里更改号码:

input[@value='1']

input[@value='2']

等等。

如果选择哪个选项无关紧要,您可以使用css定位器".sub-question .answers:nth-child(6) input"执行List<WebElement>,并在循环中选择所有项目(示例是为每个子问题选择答案选项"4",您可以根据需要更改它(

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import java.util.List;
public class QuestionTenPage {
WebDriver driver;
@FindBy(css = ".sub-question .answers:nth-child(6) input")
private List<WebElement> lastAnswerForSubQuestions;
public void checkAllSubQuestions() {
lastAnswerForSubQuestions.forEach(radio -> ((JavascriptExecutor)driver).executeScript("arguments[0].click();", radio));
}
}

相关内容

最新更新