Элемент не найден Исключение в Selenium

Я пытаюсь отправить ключи в поля во всплывающем окне. company_name, contact_surname и contact_first_name. Нет iframe. Я также попробовал обработчик окон, но это не сработало. Вот мой фрагмент кода и приведенный ниже HTML-код:

driver.findElement(By.xpath("//input[@name='company_name']")).sendKeys("Ginger Bread");
driver.findElement(By.name("contact_first_name")).sendKeys("Ingrid");
driver.findElement(By.name("contact_surname")).sendKeys("Cumberbridge");

HTML-код:

<div id = "ibox_content" style = "overflow: auto; height: 322px;"><div id = "quickCreateForm" style = "background:silver; padding:4px; border:1px solid white; width:95%;">
<form> 
    <table width = "100%" border = "0" cellpadding = "2" cellspacing = "0">
    <tbody><tr><td colspan = "2" align = "center">
    <input type = "button" value = "Create" class = "button" onclick = "return quickCreate(this, true); ">

    <input type = "button" value = "Close" class = "button" onclick = "iBox.hide();">

    </td></tr>
    <tr><td align = "right" valign = "top"><strong>Company:</strong></td>
        <td align = "left" valign = "top" nowrap = "">  
        <input type = "text" name = "company_name" value = "" size = "15" maxlength = "120">
    </td></tr>
    <tr><td align = "right" valign = "top"><strong>First Name:</strong></td>
        <td align = "left" valign = "top"> 
        <input type = "text" name = "contact_first_name" value = "" size = "15" maxlength = "120">
    </td></tr> 
    <tr><td align = "right" valign = "top"><strong>Last Name:</strong></td>
        <td align = "left" valign = "top">
        <input type = "text" name = "contact_surname" value = "" size = "15" maxlength = "120"> 
        </td></tr>

    </tbody></table>
</form>
</div></div>

Пожалуйста, прочтите, как предоставить минимальный воспроизводимый пример. Поскольку вопрос стоит, на него очень сложно ответить.

SiKing 10.10.2018 01:57
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
0
1
1 066
5

Ответы 5

Попробуйте использовать CSS Selector driver.findElement (By.CssSelector ("input [имя = имя_компании]")). sendKeys ("Имбирный хлеб"); driver.findElement (By.CssSelector ("input [name = contact_first_name]")). sendKeys ("Ингрид"); driver.findElement (By.CssSelector ("вход [имя = контакт_фамилия]")). sendKeys ("Камбербридж");

Приведенный ниже xpath должен вам помочь:

//div[@id='ibox_content' and contains(@style,'height')]//input[@name = "company_name"]

Попробуйте использовать приведенный ниже xpath:

driver.findElement(By.xpath("//input[contains(@name,'company_na')]")).sendKeys("Ginger Bread");

Почему поиск по частичному @name должен быть более эффективным, чем поиск по точному @name?

Andersson 10.10.2018 12:07

Вы можете использовать следующий Стратегии поиска для вызова sendKeys() в нужные поля:

  • Company:

    driver.findElement(By.xpath("//div[@id='quickCreateForm']/form//td/strong[contains(.,'Company')]//following::td[1]/input")).sendKeys("Ginger Bread");
    
  • First Name:

    driver.findElement(By.xpath("//div[@id='quickCreateForm']/form//td/strong[contains(.,'First Name')]//following::td[1]/input")).sendKeys("Ingrid");
    
  • Last Name:

    driver.findElement(By.xpath("//div[@id='quickCreateForm']/form//td/strong[contains(.,'Last Name')]//following::td[1]/input")).sendKeys("Cumberbridge");
    

Кажется, вы отправляете ключи до загрузки фактического элемента, поэтому Вам нужно явно указать ожидание, прежде чем вы попытаетесь отправить ему ключи,

WebElement element = new WebDriverWait(Driver,30).until(ExpectedConditions.elementToBeClickable(By.name("company_name")));

или вы можете использовать это,

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

тогда позвони,

driver.findElement(By.xpath("//input[contains(@name,'company_name')]")).sendKeys("Ginger Bread");

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