在 selenium java 中未选中复选框。尝试了一切,但没有任何效果

问题描述 投票:0回答:0

我正在尝试为此填写注册页面,用户将首先进入注册页面,他们必须在其中输入姓名和电子邮件地址,然后单击“注册”按钮。这将导航到注册页面,用户必须在其中输入所有详细信息。在注册页面上,复选框不可点击。 请帮我解决这个问题。 这是 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也无法点击它。

java selenium-webdriver selenium-chromedriver webdriverwait javascriptexecutor
© www.soinside.com 2019 - 2024. All rights reserved.