pycharm-python с селеновым веб-драйвером. Объект ошибки Get не имеет драйвера атрибута - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь запустить базовую автоматизацию на веб-сайте tesco на веб-драйвере селена на python, используя PyCharm. Я могу создать 1 функцию, и в ней есть все, и она работает. Однако, когда я делю все это на разные функции, я получаю следующее сообщение об ошибке:

driver = self.driver

AttributeError: у объекта 'FirstTest' нет атрибута 'driver'

Мой код на данный момент:

import unittest
from selenium import webdriver

class FirstTest(unittest.TestCase):

def test_setUp(self):
    self.driver = webdriver.Chrome()
    self.driver.maximize_window()
    self.driver.get("http://tesco.com")

    self.tearDown()

def test_websiteCheck(self):
    driver = self.driver
    assert "Tesco - Supermarkets | Online Groceries, Clubcard & Recipes" in driver.title

    self.tearDown()

def test_loginPage(self):
    driver = self.driver
    signIn = self.driver.find_element_by_link_text("Sign in")
    signIn.click()
    username = self.driver.find_element_by_name("username")
    username.send_keys("test1234@hotmail.com")
    password = self.driver.find_element_by_name("password")
    password.send_keys("test")
    self.driver.find_element_by_xpath("/html/body/div/div/div[2]/div/div/div/div[2]/div/form/button").click()

def test_pickingGroceries(self):
    self.driver = self.driver
    self.driver.find_element_by_xpath("/html/body/div[1]/div/nav/div[1]/ul/li[1]/div/div[1]/a").click()
    self.driver.find_element_by_xpath("/html/body/div[1]/div/nav/div[1]/ul/li[1]/div/div[1]/div/div[2]/div[1]/ul/li[2]/a/h3/span").click()

Есть идеи о том, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

вы нигде не вызываете функцию test_SetUp и ничего не возвращаете из функции test_SetUp. Моим предложением будет использование функции init вместо test_SetUp. Затем в других функциях вы создаете driver = self.driver, поэтому используйтеDriver.functions вместо self.driver снова.

from selenium import webdriver
import unittest

class FirstTest(unittest.TestCase):

def __init__(self):
    self.driver = webdriver.Chrome()
    self.driver.maximize_window()
    self.driver.get("http://tesco.com")

    self.tearDown()

def test_websiteCheck(self):
    driver = self.driver
    assert "Tesco - Supermarkets | Online Groceries, Clubcard & Recipes" in 
    driver.title

    self.tearDown()

def test_loginPage(self):
    driver = self.driver
    signIn = driver.find_element_by_link_text("Sign in")
    signIn.click()
    username = driver.find_element_by_name("username")
    username.send_keys("test1234@hotmail.com")
    password = driver.find_element_by_name("password")
    password.send_keys("test")

def test_pickingGroceries(self):
    driver = self.driver
0 голосов
/ 28 октября 2019

Сначала вы вызывали test_SetUp(self)?
Вместо этого вы должны создать def __init__(self): функцию, которая будет запускаться при создании экземпляра объекта класса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...