【问题标题】:Selenium web driver - check box not getting clickedSelenium Web 驱动程序 - 未单击复选框
【发布时间】:2014-12-12 12:42:12
【问题描述】:

我试图单击链接http://www.deal4loans.com/agent.php 中的复选框。但它没有被选中。下面是我的代码。要显示 chcek 框,我们需要从“我是”下拉列表中选择第二个选项

但我注意到,如果编写代码只是为了检查这些复选框而不为除复选框之外的所有其他字段添加数据,它可以工作。但是当我们输入名称、邮件 ID、Iam、城市、移动数据时您交易的产品将无法使用。

请帮忙

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
public class Test {
    public static WebDriver driver=new FirefoxDriver();
    public static void main(String[] args)
    {
        driver.get("http://www.deal4loans.com/");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.findElement(By.xpath("html/body/div[4]/div/div/div[1]/a[1]")).click();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);     
     driver.findElement(By.xpath("html/body/div[6]/div[1]/div/div[4]/form/table/tbody/tr[3]/td/table/tbody/tr[1]/td[2]/input")).sendKeys("Vish");
       driver.findElement(By.xpath("html/body/div[6]/div[1]/div/div[4]/form/table/tbody/tr[3]/td/table/tbody/tr[2]/td[2]/input")).sendKeys("vish@gmail.com");

        Select listbox1 = new Select(driver.findElement(By.xpath("html/body/div[6]/div[1]/div/div[4]/form/table/tbody/tr[3]/td/table/tbody/tr[3]/td[2]/select")));
         listbox1.selectByValue("2");
       Select listbox2 = new Select(driver.findElement(By.xpath("html/body/div[6]/div[1]/div/div[4]/form/table/tbody/tr[3]/td/table/tbody/tr[4]/td[2]/select")));
          listbox2.selectByValue("Chennai");

          driver.findElement(By.xpath("html/body/div[6]/div[1]/div/div[4]/form/table/tbody/tr[3]/td/table/tbody/tr[6]/td[2]/input")).sendKeys("9898765676");

        driver.findElement(By.xpath("//input[@value='Personal Loan']")).click(); 

            driver.findElement(By.xpath("//input[@value='Home Loan']")).click(); 

            driver.findElement(By.xpath("//input[@value='Car Loan']")).click(); 

            driver.findElement(By.xpath("//input[@value='Loan Against Property']")).click(); 

            driver.findElement(By.xpath("//input[@value='Business Loan']")).click();

            driver.findElement(By.xpath("//input[@value='Credit Card']")).click();

    driver.findElement(By.xpath("html/body/div[6]/div[1]/div/div[4]/form/table/tbody/tr[3]/td/table/tbody/tr[9]/td/input")).click();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
     }


     }

【问题讨论】:

  • 你能试试用 ID 代替 Xpath 作为复选框吗?它适用于 ID。

标签: selenium


【解决方案1】:

知道了!!

2 个 div,id 为 'div0' 的 div 和 'div1' 的 div,'display attribute' 从 'none' 变为 'block' 并且它们具有相同的复选框和相同的 'value' 属性,因此他们没有被点击。下面是该复选框块的图像:

以下代码将始终有效(当然,当显示选项时)。为了保持一致性,我还使用相对 xpath 修改了您的代码:

WebDriver driver = new FirefoxDriver();

driver.manage().window().maximize();

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

driver.get("http://www.deal4loans.com/");

driver.findElement(By.xpath("//a[.='Agents Login']")).click();

driver.findElement(By.name("From_Name")).sendKeys("Vish");
driver.findElement(By.name("From_Email")).sendKeys("vish@gmail.com");

Select listbox1 = new Select(driver.findElement(By.id("query_type")));
listbox1.selectByValue("2");
Select listbox2 = new Select(driver.findElement(By.id("city")));
listbox2.selectByValue("Chennai");

driver.findElement(By.name("Mobile")).sendKeys("9898765676");

driver.findElement(By.xpath("//div[contains(@style,'block')]//input[@value='Personal Loan']")).click(); 

driver.findElement(By.xpath("//div[contains(@style,'block')]//input[@value='Home Loan']")).click(); 

driver.findElement(By.xpath("//div[contains(@style,'block')]//input[@value='Car Loan']")).click(); 

driver.findElement(By.xpath("//div[contains(@style,'block')]//input[@value='Loan Against Property']")).click(); 

driver.findElement(By.xpath("//div[contains(@style,'block')]//input[@value='Business Loan']")).click();

driver.findElement(By.xpath("//div[contains(@style,'block')]//input[@value='Credit Card']")).click();

driver.findElement(By.name("submit")).click(); 

【讨论】:

  • @RupeshShinde : 哎呀..谢谢.. :) 我相信如果海报也适用,她肯定会将其标记为答案.. :)
猜你喜欢
  • 1970-01-01
  • 2018-01-22
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 2019-04-22
  • 2019-05-04
  • 2018-10-15
相关资源
最近更新 更多