Witam, mam problem z uruchomieniem testów. Jak mam tak w kodzie:
def test_dodanie_do_Koszyka(self): driver = self.driver
driver.find_element_by_css_selector("div:nth-child(1)>div:nth-child(1)>div>div>div>input").click() driver.find_element_by_css_selector("div:nth-child(1)>div:nth-child(1)>div>div>div>input").clear() driver.find_element_by_css_selector("div:nth-child(1)>div:nth-child(1)>div>div>div>input").send_keys("3") driver.find_element_by_xpath("//button[@data-product-name='Okulary']").click() driver.find_element_by_css_selector("div:nth-child(1)>div:nth-child(2)>div>div>div>input").click() driver.find_element_by_css_selector("div:nth-child(1)>div:nth-child(2)>div>div>div>input").clear() driver.find_element_by_css_selector("div:nth-child(1)>div:nth-child(2)>div>div>div>input").send_keys("2") driver.find_element_by_xpath("//button[@data-product-price='39.22']").click()
to test uruchamia się. A jak zostanie zmodyfikowany na taki sposób:
def test_dodanie_do_Koszyka(self): driver = self.driver okulary = driver.find_element_by_css_selector(\"div:nth-child(1)>div:nth-child(1)>div>div>div>input\").click() okulary.clear() okulary.send_keys(\"3\") driver.find_element_by_xpath(\"//button[@data-product-name=\'Okulary\']\").click() pilka = driver.find_element_by_css_selector(\"div:nth-child(1)>div:nth-child(2)>div>div>div>input\").click() pilka.clear() pilka.send_keys(\"2\") driver.find_element_by_xpath(\"//button[@data-product-price=\'39.22\']\").click()
to już nie uruchamia się .W screen jest pokazany błąd: https://imgur.com/a/uew2xu2
Na screenie jest pokazane, że jest problem z clear. Tylko ja nie wiem co jest nie tak. Mała pomoc ?
Pozdrawiam
ps. Tu jest link do github: https://github.com/lblaszkowski/ASTA
ja już miałem:
def test_dodanie_do_koszyka(self):
driver = self.driver
okulary = driver.find_element_by_css_selector(“div:nth-child(1)>div:nth-child(1)>div>div>div>input”).click()
okulary.clear()
okulary.send_keys(“3”)
driver.find_element_by_xpath(“//button[@data-product-name=’Okulary’]”).click():(
i wyskakuje mi ten błąd:
AttributeError: ‘NoneType’ object has no attribute ‘clear’
I nie wiem jak to rozwiązać, ponieważ pierwszy raz z tym spotykam się
Hej,
Tak, dlatego problem leży w linii:
okulary = driver.find_element_by_css_selector(“div:nth-child(1)>div:nth-child(1)>div>div>div>input”).click()
W tym momencie do zmiennej okulary
ląduje wynik działania metody .click()
, który ma wartość None
.
Jeśli teraz na zmiennej okulary
(która ma wartość None
), spróbujemy wywołać metodę .click()
, to dostaniemy właśnie powyższy błąd:
AttributeError: ‘NoneType’ object has no attribute ‘clear’
Mozna to naprawić w ten sposób – czyli click wywołujemy na tym co nam znajdzie metoda find_element_by_css_selector
:
driver.find_element_by_css_selector(“div:nth-child(1)>div:nth-child(1)>div>div>div>input”).click() driver.find_element_by_css_selector(“div:nth-child(1)>div:nth-child(1)>div>div>div>input”).clear()
Albo poprzez znalezienie elementu strony za pomocą metody find_element_by_css_selector
, przypisanie elementu do zmiennej a nastepnie wykonanie na niej kolejno metody click()
i clear()
:
okulary = driver.find_element_by_css_selector(“div:nth-child(1)>div:nth-child(1)>div>div>div>input”) okulary.click() okulary.clear()
ok. działa Wielkie dzięki za pomoc 🙂