使用 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));
}
}
使用 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));
}
}