PAGE_TS001.py:
import json from selenium import webdriver class DemoQA(): def __init__(self): self.driver = webdriver.Firefox() with open("conf.json") as data_file: parser = json.load(data_file) url = parser.get("URL") self.driver = webdriver.Firefox() self.driver.get(url) #находим нужные поля fName = self.driver.find_element_by_id("name_3_firstname") lName = self.driver.find_element_by_id("name_3_lastname") phone = self.driver.find_element_by_id("phone_9") hobby = self.driver.find_element_by_name("checkbox_5[]") uName = self.driver.find_element_by_id("username") email = self.driver.find_element_by_id("email_1") password = self.driver.find_element_by_id("password_2") confirm = self.driver.find_element_by_id("confirm_password_password_2") submit = self.driver.find_element_by_name("pie_submit") #заполняем fName.send_keys(parser.get("First Name")) lName.send_keys(parser.get("Last Name")) hobby.click() phone.send_keys(parser.get("Phone Number")) uName.send_keys(parser.get("Username")) email.send_keys(parser.get("E-mail")) password.send_keys(parser.get("Password")) confirm.send_keys(parser.get("Confirm Password")) # кликаем сабмит submit.click() # hz nado/net zhdat` # driver.implicitly_wait(5) ts = DemoQA() TEST_TS001.py
import pytest import page_TS001 def test_function(): text = "Username already exists" assert (text in page_TS001.ts.driver.find_elements_by_class_name("piereg_login_error") == True) test_function() I’m picking up testing, there are two files in the page and test projects, respectively, I’m not sure if I wrote the test correctly, just like I’m not sure that I created the project architecture (my testing knowledge is about 5 hours).
At the same time I have at launch Test_TS001.py: https://pastebin.com/6exM1E4T
test_case_TS001.py:6: in test_function assert (text in page_TS001.ts.driver.find_elements_by_class_name("piereg_login_error") == True) E assert 'Username already exists' in [<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="c5d20ee4-8285-49fb-a777-42862e1c3afa", element="90b84448-6b35-4133-8925-e0b8bb2c0503")>] E + where [<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="c5d20ee4-8285-49fb-a777-42862e1c3afa", element="90b84448-6b35-4133-8925-e0b8bb2c0503")>] = <bound method WebDriver.find_elements_by_class_name of <selenium.webdriver.firefox.webdriver.WebDriver (session="c5d20ee4-8285-49fb-a777-42862e1c3afa")>>('piereg_login_error') E + where <bound method WebDriver.find_elements_by_class_name of <selenium.webdriver.firefox.webdriver.WebDriver (session="c5d20ee4-8285-49fb-a777-42862e1c3afa")>> = <selenium.webdriver.firefox.webdriver.WebDriver (session="c5d20ee4-8285-49fb-a777-42862e1c3afa")>.find_elements_by_class_name E + where <selenium.webdriver.firefox.webdriver.WebDriver (session="c5d20ee4-8285-49fb-a777-42862e1c3afa")> = <page_TS001.DemoQA object at 0x036D4930>.driver E + where <page_TS001.DemoQA object at 0x036D4930> = page_TS001.ts !!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!! ========================== 1 error in 13.07 seconds =========================== Test data in the conf.json file:
{ "URL":"http://demoqa.com/registration/", "First Name": "David", "Last Name": "Jones", "Hobby": "0", "Phone Number": "89377005211", "Username": "DavidJonesZZ", "E-mail": "johndoe@host.net", "Password": "mysecret", "Confirm Password": "mysecret" } Question: Why does this test not work? (I check for text in the field with the class "piereg_login_error"). Or do you need to use re?
ps. I also tried driver.page_source instead of a specific field - the same error.
pps. If it is easy to point out inaccuracies in the work.