Ошибка StopItem при вводе текста в текстовое поле - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь ввести длинную строку (около 4000 символов) в текстовое поле, используя Python и Selenium.

Как только введена полная строка, все текстовое поле исчезнет, ​​и появится сообщение об ошибке:

Внутренний стоп-шаг: False

c: \ users \ echo \ anaconda3 \ lib \ site-packages \ ipython \ core \ interactiveshell.py (3058) run_cell_asyn c () -> интерактивность = интерактивность, компилятор = компилятор, результат = результат)

В режиме отладки я тестировал с send_keys ("aapl"), он работал нормально, но не с длинной строкой. L oop также отлично работает и предоставляет строку, содержащую около 800 символов, разделенных запятой.

Мой код:

# Get symbols from Excel

filename = "file path"
wb1 = xl.load_workbook(filename)
ws1 = wb1.worksheets[8]
mr = ws1.max_row
symbols = ""
for i in range(2, mr + 1):
        c = ws1.cell(row = i, column = 1)
        if isinstance(c.value, str):
            symbols += f",{c.value}"
        else:
            print(c)

# Input symbols to Watchlist

WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, '//input[@data-ng-model="userEnteredSymbols"]'))).send_keys(symbols)

# The code for the website:

    <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" placeholder="Add a symbol..." class="sec-search-box bc-form__add-symbol-input ng-pristine ng-invalid ng-invalid-required ng-touched placeholder" data-ng-model="userEnteredSymbols" data-barchart-clear-input="" required="">```

1 Ответ

0 голосов
/ 26 января 2020

Итак, проблема решена. Я использовал генератор и перебрал его, не знаю как, но теперь он работает.

def gen_function():
l = symbols
for s in l:
    yield s
gen_obj = gen_function()

# Input symbols to Watchlist
for s in gen_obj:
    WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, '//input[@data-ng-model="userEnteredSymbols"]'))).send_keys(s)
...