Почему я не могу отправить_ключи в текстовое поле с селеном? Атрибутееррор: «Неттипе»

У меня серьезные трудности с заполнением текстовых полей на этом веб-сайте. Элемент имеет тип = "текст". Он продолжает возвращаться как AttributeError: 'NoneType'.

Я использовал предложение try, чтобы увидеть, действительно ли на него нажали, и это не ошибка. Кроме того, текстовое поле выбрано, и когда я оставляю его в качестве переднего окна, я могу вводить текстовое поле, не нажимая ничего после возникновения ошибки.

Я попытался продлить паузу перед щелчком на 1 минуту, но безрезультатно.

Пробовал выбирать по xpath, результат тот же.

Я попытался щелкнуть объект, сделал паузу в 10 секунд и снова щелкнул объект. Ничего такого.

мой код:

def Search(driver,productID):
    print "Initiate Search"

    #Fill in current product ID
    #/html/body/table[3]/tbody/tr/td/table/tbody/tr/td[2]/div[2]/form/table/tbody/tr/td/input

    try: inputElement = driver.find_element_by_name("CategoryName").click()
    except: print "could not click"
    print "Clicked Product ID"

    time.sleep(5)
    inputElement.send_keys(str(productID))  ##Line 105 - Errors out here

Ошибка

Traceback (most recent call last):
  File "/Users/ME/Documents/PYTHON/Creating Static Attributes/StaticWAttributes_1.py", line 246, in <module>
    Search(driver,productID)
  File "/Users/ME/Documents/PYTHON/Creating Static Attributes/StaticWAttributes_1.py", line 105, in Search
    inputElement.send_keys(str(productID))
  AttributeError: 'NoneType' object has no attribute 'send_keys'

Последний выходной оператор печати:

Initiate Search
Clicked Product ID

HTML:

  <table cellSpacing="0" cellPadding="0" border="0">
        <tr>
          <td class="actionrow">Search Products by  
          <select name="categorytype">
                        <option selected value="name">Product Name or Description</option>
                        <option  value="catid">Product ID</option>
                  </select> <input type="text" name="CategoryName" value="" size="20"><? <<-- I AM TRYING TO CLICK THIS ?>
                  &nbsp;in&nbsp;
                  <select name="ddlproductType" ID="Select2">
                    <option selected value="100">All</option>
                        <option  value="1">Versioned</option>

                            <option  value="7">Variable</option>

                        <option  value="5">Static with Attributes</option>
            <option  value="11">PowerPoint</option>
                  </select>&nbsp;
                <input type="submit" value="Go" name="action" onClick="javascript:resetAll();"> 
          </td>
        </tr>
  </table>

person ExperimentsWithCode    schedule 21.03.2014    source источник


Ответы (1)


Ваша проблема здесь:

    try: inputElement = driver.find_element_by_name("CategoryName").click()

Я не уверен, что такое inputElement в случае с python, но я предполагаю, что это все еще ноль. Я не думаю, что click() ничего не возвращает.

Если вы измените его на это, он должен работать:

try: inputElement = driver.find_element_by_name("CategoryName")
    inputElement.click()
person Richard    schedule 21.03.2014
comment
Вау, этот пролетел прямо над моей головой. Очень признателен. Я не могу принять твой ответ еще пару минут, но он придет. - person ExperimentsWithCode; 21.03.2014
comment
Комментарий: Python часто делает это намеренно, чтобы препятствовать построению очень сложных выражений. Например. вам не разрешено говорить if ((x = findelement()) != Null), сортировка списка на месте возвращает Null и т. д. Похоже, что Selenium использует тот же стиль. - person alexis; 21.03.2014