如何点击“添加用户”#39;按钮?

时间:2018-05-25 12:17:05

标签: java selenium-webdriver

如何点击添加用户'按钮?我已尝试使用XPath,链接文本,CSS选择器,但没有一个有效。

HTML

<div class="col-xs-12 col-md-6 col-sm-8">
    <div class="file-upload btn btn-default" style="margin-top:4px">
        <span>Browse</span>
        <input accept=".csv" class="upload" id="File" name="File" value="" type="file">
        <input data-val="true" data-val-number="The field IsImporting must be a number." data-val-required="The IsImporting field is required." id="IsImporting" name="IsImporting" value="0" type="hidden">
    </div>
    <button type="Submit" id="btnImport" style="margin-top:4px" class="btn btn-default greybutton">Import</button>
    <a href="/Config/ImportFormat/UserImportFormat.csv" style="margin-top:4px" class="btn btn-default bluebutton">Download Sample</a>
    <a href="javascript:void(0)" id="userAdd" style="margin-top:4px" class="btn btn-default bluebutton">Add User</a>
    <a href="javascript:void(0)" id="userHierarchy" style="margin-top:4px;display:none;" class="btn btn-default bluebutton">User Hierarchy</a>
</div>

我的代码

System.setProperty("webdriver.gecko.driver", "C:\\geckodriver-v0.20.1-win64\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();

driver.findElement(By.id("btnsubmit")).click();
Thread.sleep(5000);

// Waiting for Loading left menu and Clicking on 'Setup' button
// driver.findElement(By.id("userAdd")).click();
Thread.sleep(5000);
driver.findElement(By.xpath("//*[@id=\'leftpaneldiv\']/ul/li[1]")).click();

// Click on 'Users' module
driver.findElement((By.cssSelector(".treeview > a:nth-child(1) > span:nth-child(1)"))).click();
Thread.sleep(5000);

3 个答案:

答案 0 :(得分:1)

根据您发布的添加用户链接HTML,您使用的定位器应该可以使用。

driver.findElement(By.id("userAdd")).click();

既然没有,可能会出现三件事之一。

  1. 您通常应该做的第一件事是确保您的定位器正常工作。它应该找到元素并理想地在页面上唯一地定位它。为此,您需要使用浏览器开发控制台。在控制台中运行$$("#userAdd")。如果它返回0,请跳至步骤2.如果它返回为1,请跳至步骤3.如果它返回为&gt; 1,则该ID在页面上不是唯一的,您需要添加详细信息到定位器,以便它只找到你想要的元素。如果您需要帮助,则需要添加更多周围的HTML。

  2. 如果定位器正在工作,请查看该元素是否在IFRAME中。如果是,则需要在尝试找到它之前将上下文切换到IFRAME

    WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(frameLocator));
    
  3. 页面完成加载时可能无法加载元素,因此您需要添加等待。如果在您尝试单击该元素之前未加载该元素,则该元素将显示为未找到。

    wait.until(ExpectedConditions.elementToBeClickable(By.id("userAdd"))).click();
    

答案 1 :(得分:0)

根据您共享的HTML,在文本为添加用户的元素上调用click(),您可以使用以下代码行:

driver.findElement(By.xpath("//a[@class='btn btn-default bluebutton' and @id='userAdd'][normalize-space()='Add User']")).click();

答案 2 :(得分:0)

最明显的是:

<强> 1。按ID查找

WebElement el = driver.findElement(By.id("userAdd"));
el.click();

如果不是这样,你有一些父元素需要切换到它。

<强> 2。找到框架或模态

driver.switchTo().frame("modalFrameTitle");

driver.switchTo().activeElement()

如果 2。,请转到步骤 1。查找元素并与之互动。