Informacija

Šuo šaukia paimamas

Šuo šaukia paimamas


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Šuo šaukia paimamas" />,

<,input type="submit" name="commit" value="Įsipareigoti" />,

<,/forma>,

<,/body>,

<,/html>,

Turiu šį test.py kodą, kuriam bandau atlikti kai kuriuos vieneto testus:

iš seleno importo žiniatinklio tvarkyklės

importo vieneto testas

klasė TestBrowserPage(unittest.TestCase):

def setUp (savarankiškai):

self.driver = žiniatinklio tvarkyklė.Firefox()

def test_home_page(self):

self.driver.get("http://localhost:8000")

self.driver.title patvirtinkite „Pagrindinio puslapio turinį“.

def test_sign_up(self):

self.driver.find_element_by_id("prisiregistravimo_įvestis")

self.driver.find_element_by_id("pateikti").click()

patvirtinkite "Registruotis kaip naujas vartotojas" self.driver.title

Kai paleidžiu testą, gaunu šią klaidą:

Failas "test.py", 22 eilutė, test_sign_up

self.driver.find_element_by_id("pateikti").click()

AttributeError: objektas „Puslapis“ neturi atributo „find_element_by_id“

Nesu tikras, kodėl gaunu klaidą, nes objektas „self.driver“ turėtų turėti „find_element_by_id“ metodą. Ar kas nors gali man padėti? Dėkoju.

A:

webdriver.Firefox() nepateikia puslapio objekto (arba tvarkyklės).

Šio Python seleno naujokas, bet atrodo, kad grąžinate žiniatinklio tvarkyklės objektą. Turėtum daryti

self.driver = žiniatinklio tvarkyklė.Firefox()

vietoj

self.driver = žiniatinklio tvarkyklė.Firefox()

Be to, jei jūsų puslapyje yra keli elementai su tuo pačiu ID, turėsite perjungti ID ieškiklį (kaip rodo @Rafael-Nieva atsakymas), todėl pabandykite:

self.driver.find_element_by_id("prisiregistravimo_įvestis")

self.driver.find_element_by_id("pateikti").click()

Be to, nenaudočiau „find_element_by_id“ visų elementų paieškai, nes yra didelė tikimybė, kad rinksite elementus kituose puslapiuose (pvz., mygtuką pateikti). Norėdami pasirinkti elementus, kurių ieškote, naudočiau ID arba xpath lokatorių, o tai reiškia, kad jūsų testas būtų šiek tiek kompaktiškesnis:

self.driver.find_element_by_id("registracijos_įvestis")

self.driver.find_element_by_id("pateikti")

A:

Pirmasis yra inicijuoti jį vieną kartą ir naudoti jį visiems metodams, ne tik atvirajam metodui. Antrasis yra kaip uždaryti tvarkyklę, nereikia skambinti "quit", nes webdriver objektas jį iškviečia pats

self.driver = žiniatinklio tvarkyklė.Firefox()

Ir savo klausimui galite tiesiog naudoti xpath:

self.driver.find_element_by_xpath('//input[@id="signup_input"]')

self.driver.find_element_by_xpath('//input[@id="pateikti"]')

Taip pat rekomenduočiau išbandyti „lxml“ biblioteką, kad rastumėte savo elementus, nes ją bus daug lengviau naudoti atliekant testus:

iš lxml importuoti html

klasė Mano_puslapis:

def init (savaime):

self.driver = žiniatinklio tvarkyklė.Firefox()

self.driver.implicitly_wait(10)

self.elements = []

def open_my_page(self):

html = self.driver.get("URL")

bandyti:

elementai = html.xpath("//input[@id='signup_input']")

išskyrus:

elementai = html.xpath("//input[@id='submit']")

self.elements.extend(elements)

def close_driver(self):

self.driver.quit()

def get_number_of_elements(self):

grąžinti objektyvą (sav. elementai)

Pavyzdys

Demonstravimo tikslais naudosime paprastą bandomąjį scenarijų:

iš selenium.webdriver.support importuoti laukiamos sąlygos kaip EC

iš seleno importo žiniatinklio tvarkyklės

iš „My_Page“ importuokite „Mano_puslapis“.

driver = webdriver.Firefox()

puslapis = Mano_puslapis()

print(page.get_number_of_elements())

print(page.get_number_of_elements())

driver.implicitly_wait(10)

bandyti:

driver.find_element_by_id("pateikti").click()

# Nepamirškite patikrinti, ar pateikimas buvo geras, ar klaida

print ("Užklausa buvo sėkminga")

pagaliau:

driver.quit()

Kai paleidžiama:

Python 3.6.3 (v3.6.3:2c38245b, 2018 m. birželio 27 d., 18:09:55) [MSC v.1900 32 bitų (Intel)] sistemoje win32

14

[pagrindinis] INFO:root:Užklausa buvo sėkminga

Ir kitame terminale:

Traceback (paskutinis skambutis):

Failas „C:UsersuserDesktop estingMy_Page.py“, 12 eilutė, <,module>,

puslapis = Mano_puslapis()

Failas "C:UsersuserDesktop estingMy_Page.py", 5 eilutė, init

self.driver.implicitly_wait(10)

Failas „C:Python36libsite-packagesseleniumwebdriver emotewebdriver.py“, 339 eilutė, esantis implicitly_wait

self.execute(Command.BEFORE_


Video, Sitemap-Video, Sitemap-Videos