我正在尝试为此填写注册页面,用户将首先进入注册页面,他们必须在其中输入姓名和电子邮件地址,然后单击“注册”按钮。这将导航到注册页面,用户必须在其中输入所有详细信息。在注册页面上,复选框不可点击。 请帮我解决这个问题。 这是 POM 类
public class RegisterNewUserPom {
private WebDriver driver;
private By newName= By.name("name");
private By newEmail= By.xpath("//form[@action='/signup']/input[3]");
private By signup=By.xpath("//form[@action='/signup']/button");
private By title=By.id("id_gender1");
private By password=By.id("password");
private By days=By.id("days");
private By month=By.id("months");
private By year=By.id("years");
private By newsLetter=By.id("newsletter");
private By optional=By.xpath("optin");
private By firstName=By.id("first_name");
private By lastName=By.id("last_name");
private By company=By.id("company");
private By address1=By.id("address1");
private By address2= By.id("address2");
private By country=By.id("country");
private By state=By.id("state");
private By city= By.id("city");
private By zipcode= By.id("zipcode");
private By mobileNumber=By.id("mobile_number");
public RegisterNewUserPom(WebDriver driver) {
this.driver=driver;
}
public void EnterNewName(String name) {
driver.findElement(newName).sendKeys(name);
}
public void EnterNewEmail(String email) {
driver.findElement(newEmail).sendKeys(email);
}
public void ClickSignUpButton() {
Actions actions=new Actions(driver);
actions.moveToElement(driver.findElement(signup)).click().build().perform();
}
public void SelectTitle() {
driver.findElement(title).click();
}
public void EnterPassword(String passWord) {
driver.findElement(password).sendKeys(passWord);
}
public void SelectDay() {
WebElement day=driver.findElement(days);
Select select=new Select(day);
select.selectByValue("2");
}
public void SelectMonth() {
WebElement months=driver.findElement(month);
Select select=new Select(months);
select.selectByVisibleText("June");
}
public void SelectYear() {
WebElement years=driver.findElement(year);
Select select=new Select(years);
select.selectByValue("1992");
}
public void SelectCheckbox() {
driver.findElement(newsLetter).click();
driver.findElement(optional).click();
}
public void EnterAddress(String add1, String add2) {
driver.findElement(address1).sendKeys(add1);
driver.findElement(address2).sendKeys(add2);
}
public void SelectCountry() {
WebElement countries=driver.findElement(country);
Select select=new Select(countries);
select.selectByValue("India");
}
public void EnterFirstName(String fname) {
driver.findElement(firstName).sendKeys(fname);
}
public void EnterLastName(String lname) {
driver.findElement(lastName).sendKeys(lname);
}
public void EnterCompanyName(String cname) {
driver.findElement(company).sendKeys(cname);
}
public void EnterCity(String cityName) {
driver.findElement(city).sendKeys(cityName);
}
public void EnterState(String stateName) {
driver.findElement(state).sendKeys(stateName);
}
public void EnterZipCode(int zip) {
String zipString= Integer.toString(zip);
driver.findElement(zipcode).sendKeys(zipString);
}
public void EnterMobileNumber(int mnumber) {
String mobile= Integer.toString(mnumber);
driver.findElement(mobileNumber).sendKeys(mobile);
}
public void RegisterUser(String name, String email) {
EnterNewName(name);
EnterNewEmail(email);
ClickSignUpButton();
}
public void EnterUserDetail(String pass, String fname, String lname,
String companyName, String address1, String address2,
String state, String city, int zipcode, int mobile) {
SelectTitle();
EnterPassword(pass);
SelectDay();
SelectMonth();
SelectYear();
SelectCheckbox();
EnterFirstName(fname);
EnterLastName(lname);
EnterCompanyName(companyName);
EnterAddress(address1, address2);
SelectCountry();
EnterState(state);
EnterCity(city);
EnterZipCode(zipcode);
EnterMobileNumber(mobile);
}
}
这是测试课
public class RegisterTest {
WebDriver driver;
LoginPOM loginPom;
RegisterNewUserPom registernewuser;
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(1000);
@BeforeMethod
public void setup() {
driver= new ChromeDriver();
driver.get("http://automationexercise.com");
driver.findElement(By.xpath("//div[@class='shop-menu pull-right']/ul/li[4]/a")).click();
registernewuser= new RegisterNewUserPom(driver);
}
@Test
public void RegisterNewUser() {
String randomEmail="username"+ randomInt +"@testpractice.com";
registernewuser.RegisterUser("Rohit", randomEmail);
}
@AfterTest
public void EnterDetailsInForm() {
String password="Test@123";
String fname="Rohit";
String lname= "Tester";
String company="test company";
String add1="hello";
String add2="hello2222";
String state="myState";
String city="dream city";
int zipcode=1234;
int mnumber=1234567890;
registernewuser.EnterUserDetail(password, fname, lname, company, add1, add2, state, city, zipcode, mnumber);
}
}
这是复选框的 HTML 代码
<div class="checker" id="uniform-newsletter"><span class=""><input type="checkbox" name="newsletter" id="newsletter" value="1"></span></div>
<label for="newsletter">Sign up for our newsletter!</label>
<div class="checker" id="uniform-optin"><span><input type="checkbox" name="optin" id="optin" value="1"></span></div>
<label for="optin">Receive special offers from our partners!</label>
这是我尝试运行的代码,但每次我运行此代码时,在注册页面上的复选框不可点击,并且元素点击被拦截时出现错误。我尝试了所有可能的方法,如 js 执行器、操作、webdriver 等待,但没有任何效果。请让我知道如何点击复选框
我尝试使用 webdriver 等待复选框直到元素可点击,也尝试使用 jsexecutor 和操作,但没有任何效果。而且我不知道为什么即使给出了id id也无法点击它。