如何点击添加用户'按钮?我已尝试使用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);
答案 0 :(得分:1)
根据您发布的添加用户链接HTML,您使用的定位器应该可以使用。
driver.findElement(By.id("userAdd")).click();
既然没有,可能会出现三件事之一。
您通常应该做的第一件事是确保您的定位器正常工作。它应该找到元素并理想地在页面上唯一地定位它。为此,您需要使用浏览器开发控制台。在控制台中运行$$("#userAdd")
。如果它返回0,请跳至步骤2.如果它返回为1,请跳至步骤3.如果它返回为&gt; 1,则该ID在页面上不是唯一的,您需要添加详细信息到定位器,以便它只找到你想要的元素。如果您需要帮助,则需要添加更多周围的HTML。
如果定位器正在工作,请查看该元素是否在IFRAME
中。如果是,则需要在尝试找到它之前将上下文切换到IFRAME
。
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(frameLocator));
页面完成加载时可能无法加载元素,因此您需要添加等待。如果在您尝试单击该元素之前未加载该元素,则该元素将显示为未找到。
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。查找元素并与之互动。