使用 selenium java 我想自动化调查页面。问题出现在一个有几个子问题的问题中

Using selenium java I want to automate a survey page. The problem arises with a question with several sub-questions

使用 selenium java 我想自动化调查页面。每个问题都有相同的 HTML 代码。问题出现在一个有几个子问题的问题中。每个子问题都有相同的 HTML 代码。

我试图做什么? 我试图依靠“名称”和“价值”。完成后,显示“继续”按钮 定位器

@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

被质疑的图片: Question image

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

问题标题不同,例如:

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']

等等..

如果您 select 的选择无关紧要,您可以使用 css 定位器“.sub-question .answers:nth-child(6) input”和 select 执行 List<WebElement>循环中的所有项目(示例是 selecting 每个子问题的答案选项“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));
    }
}