Как проверить, имеет ли текстовое поле значение, которое я ввел? - PullRequest
0 голосов
/ 26 января 2019

Я очень плохо знаком с Python и Selenium, и я думаю, что мне нужно использовать команду Assert, чтобы проверить, есть ли в текстовом поле то, что я набрал через Selenium.

Я искал час и могуне могу найти ответ.

Вот мой код:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains as AC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select, WebDriverWait

driver = webdriver.Ie()

driver.get("https://bie.farmersinsurance.com/")

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div/form/table/tbody/tr[5]/td/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[1]/td[1]/input"))).send_keys("tess893")

element = driver.find_element_by_xpath("/html/body/div/form/table/tbody/tr[5]/td/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[1]/td[1]/input")
assert element.text == "tess893"

Вот мои результаты:

Traceback (most recent call last):
  File "c:\Users\uswarv41\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\ptvsd_launcher.py", line 45, in <module>
    main(ptvsdArgs)
  File "c:\Users\uswarv41\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\lib\python\ptvsd\__main__.py", line 265, in main
    wait=args.wait)
  File "c:\Users\uswarv41\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\lib\python\ptvsd\__main__.py", line 256, in handle_args
    run_main(addr, name, kind, *extra, **kwargs)
  File "c:\Users\uswarv41\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\lib\python\ptvsd\_local.py", line 52, in run_main
    runner(addr, name, kind == 'module', *extra, **kwargs)
  File "c:\Users\uswarv41\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\lib\python\ptvsd\runner.py", line 32, in run
    set_trace=False)
  File "c:\Users\uswarv41\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\lib\python\ptvsd\_vendored\pydevd\pydevd.py", line 1283, in run
    return self._exec(is_module, entry_point_fn, module_name, file, globals, locals)
  File "c:\Users\uswarv41\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\lib\python\ptvsd\_vendored\pydevd\pydevd.py", line 1290, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "c:\Users\uswarv41\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\lib\python\ptvsd\_vendored\pydevd\_pydev_imps\_pydev_execfile.py", line 25, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "c:\_TMP\Test2.py", line 18, in <module>
    assert element.text == "tess893"
AssertionError

Я не знаю, почему я получаюAssertionError.Судя по тому, что я прочитал, он не должен выдавать никаких ошибок.

Ответы [ 2 ]

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

.text - не та недвижимость, которую вы ищете. Возвращает видимый текст между тегами элементов

Вы хотите value элемента ввода. Чтобы получить это, я думаю, вы бы использовали element.get_attribute('value')

Утверждение assert ниже должно работать

assert element.get_attribute('value') == "tess893"
0 голосов
/ 26 января 2019

Ваш код верен в синтаксисе, но именно так работает assert.

assert (condition) ничего не сделает, если условие истинно, но если оно ложно, выдает ошибку.

"assert" утверждает, что element.text == "tess893", если он дает AssertError, чем element.text НЕ равен "tess893".Возможно, это неправильный xpath или другой текст, но я не уверен.

...