Как нажать на кнопку «Добавить пользователя»? - PullRequest
0 голосов
/ 25 мая 2018

Как я могу нажать на кнопку «Добавить пользователя»?Я пробовал с 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 голосов
/ 25 мая 2018

В соответствии с HTML-ссылкой «Добавить пользователя», которую вы опубликовали, используемый вами локатор должен работать.

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

Поскольку это не так, вероятно, одна из трех вещей может бытьпроблема.

  1. Первое, что вы обычно должны сделать, это убедиться, что ваш локатор работает.Он должен найти элемент и в идеале найти его уникально на странице.Для этого вам понадобится консоль разработчика браузера.Запустите $$("#userAdd") в консоли.Если он возвращается как 0, перейдите к шагу 2. Если он возвращается как 1, перейдите к шагу 3. Если он возвращается как> 1, то этот идентификатор не является уникальным на странице, и вам нужно будет добавить детали клокатор, так что он находит только тот элемент, который вы хотите.Если вам нужна помощь в этом, вам нужно будет добавить больше окружающего HTML.

  2. Если локатор работает, посмотрите, находится ли элемент в IFRAME.Если это так, вам нужно будет переключить контекст в IFRAME, прежде чем пытаться его найти.

    WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(frameLocator));
    
  3. Элемент может не загружаться, когда страница завершает загрузку, поэтому вы можетенужно добавить ожидание.Если элемент не загружен до того, как вы попытаетесь щелкнуть по нему, он будет показан как не найденный.

    wait.until(ExpectedConditions.elementToBeClickable(By.id("userAdd"))).click();
    
0 голосов
/ 25 мая 2018

Как наиболее очевидная вещь:

1.найти по идентификатору

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

, если это не так, у вас есть родительский элемент, на который нужно переключиться.

2.найти кадр или модальное

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

или

driver.switchTo().activeElement()

и, если оно равно 2. , перейти к шагу 1. найтиэлемент и взаимодействовать с ним.

0 голосов
/ 25 мая 2018

В соответствии с HTML, которым вы поделились, чтобы вызвать click() для элемента с текстом Добавить пользователя , вы можете использовать следующую строку кода:

driver.findElement(By.xpath("//a[@class='btn btn-default bluebutton' and @id='userAdd'][normalize-space()='Add User']")).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...