Невозможно вставить текст в текстовое поле, используя селен - PullRequest
0 голосов
/ 04 июля 2018

Невозможно найти текстовое поле, используя селен. Ошибка выглядит следующим образом:

 org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"proposedTagName"}

HTML:

<div id="content">
<div id="addTagDiv" class="overlay" style="height: 50px">
    <form id="addTagForm" action="inserttag" method="post">
        <div class="floatLeft" style="margin-right: 15px">
            <table class="formTable">
                <tbody><tr>
                    <td class="inputTitleCell">New Tag Name:</td>
                </tr>
                <tr>
                    <td><input id="proposedTagName" name="tagName" type="text" class="textInput baselineVersionInput" value="" maxlength="100"></td>
                </tr>
            </tbody></table>
        </div>
        <div class="floatRight">
            <table class="formTable">
                <tbody>
                <tr>
                    <td><input id="addTagSubmitButton" class="addNewTagSubmitButton" type="submit" value="Create New Tag"></td>
                </tr>
            </tbody></table>
        </div>
    </form>
</div>

Ответы [ 4 ]

0 голосов
/ 04 июля 2018

В соответствии с HTML, которым вы поделились, элемент {"method":"id","selector":"proposedTagName"} является тегом <input>, и вам, возможно, потребуется отправить последовательность символов в элемент. Чтобы добиться этого, вам может потребоваться WebDriverWait , чтобы желаемый элемент был кликабельным , и вы можете использовать следующее решение:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//form[@id='addTagForm']//following::table[1]//input[@class='textInput baselineVersionInput' and @id='proposedTagName']"))).sendKeys("A.Prakash");
0 голосов
/ 04 июля 2018

Может потребоваться подождать, прежде чем устанавливать значение, как указано ниже.

WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("proposedTagName")));
element.sendKeys("valuetobesend");

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

0 голосов
/ 04 июля 2018

Пожалуйста, используйте ниже xpath вместе с ожидаемыми условиями

XPath:

//table//input [@id='proposedTagName']

Код:

String value="XXXXX";
WebDriverWait wait=new WebDriverWait(driver,30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//table//input[@id='proposedTagName']")));
driver.findElement(By.xpath("//table//input[@id='proposedTagName']")).sendKeys(value);
0 голосов
/ 04 июля 2018

Вы можете сделать это, используя driver.findElement(By.id("proposedTagName")).sendKeys("valuet");

Как то так -

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class A {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", chromeDriverPath); //the path of chrome exe here
        WebDriver driver = new ChromeDriver();
        WebDriverWait wait = new WebDriverWait(driver, 10);
        driver.get("url here");
        WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("proposedTagName")));
        element.sendKeys("value");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...