Как найти xpath кнопки выбора файла?

Мне нужно нажать кнопку «Выбрать файл». Пробовали использовать следующий XPath:

driver.findElement(By.xpath("//div[@class='ant-modal-body']//button[contains(@class,'ant-btn-ghost')]/i")).click();

Но приведенный выше код у меня не сработал.

Ниже приведен код, который я получаю после нажатия F12:

<button class="ant-btn ant-btn-ghost" type="button">
<i class="anticon anticon-upload"/>
<span> Select File </span>
</button>

Пытаться. driver.findElement(By.xpath("//span[normalize-space()='Selec‌​t File']")).click();. Если не работает, проверьте, находится ли кнопка внутри iframe, или примените явное / неявное ожидание.

Andersson 11.04.2018 11:43

@Andersson благодарит меня, это сработало для меня после добавления кода выше и Thread.sleep (2000);

user9261868 11.04.2018 12:13
0
2
172
2

Ответы 2

Как вы упомянули в своих комментариях, вы решили свою проблему с помощью Thread.sleep(2000), что противоречит всем Лучшие практики. Чтобы щелкнуть кнопку с текстом Выбрать файл, вы должны вызвать WebDriverWait и использовать следующую строку кода:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='ant-modal-body']//button[@class='ant-btn ant-btn-ghost']//span[contains(.,'Select File')]"))).click();

Сначала попробуйте:

    driver.findElement(By.xpath("//span[contains(text(), 'SelectFile')]")).click();

Если не работает, попробуйте:

    WebElement composeBtn = driver.findElement(By.className("ant-btn ant-btn-ghost"));
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", composeBtn);

Другие вопросы по теме