Экземпляр addinfourl не имеет атрибута 'find' (python2.7) - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь найти две строки на статической странице для небольшого проекта.Использую Python 2.7 и не могу обновиться (мне нужно использовать данный публичный раннер).Я написал этот код:

import urllib
url = "https://the-internet.herokuapp.com/context_menu"
webtxt = urllib.urlopen(url)
print webtxt.read()

str1 = "Right-click in the box below"
str2 = "Alibaba"

isRightClickText = webtxt.find(str1)
IsAlibaba = webtxt.find(str2)

def testRightClick():
    assert isRightClickText > -1

def testIsAlibaba():
    assert IsAlibaba > -1

Этот тест должен пройти для первой строки и Fail для второй.

Запуск этого кода в Gitlab CI \ CD постоянно возвращает:

E AttributeError: экземпляр addinfourl не имеет атрибута 'find'

Я просмотрел похожие посты, связанные с проблемой атрибутов, но не относящийся к делу.

Любая помощьдобро пожаловать!(Я новичок в Python)

1 Ответ

0 голосов
/ 31 декабря 2018

Как говорит ошибка addinfourl экземпляр не имеет атрибута find.Пожалуйста, попытайтесь понять тип webtext.

print type(webtext) #Gives the type of webtext as <type 'instance'>

Итак, все, что вам нужно, это преобразовать тип данных webtext в string, чтобы использовать метод find().

Измените эту строку webtxt = urllib.urlopen(url) на webtxt = str(urllib.urlopen(url))

Итак, наконец код будет выглядеть так:

import urllib
url = "https://the-internet.herokuapp.com/context_menu"
webtxt = str(urllib.urlopen(url))
print webtxt.read()

str1 = "Right-click in the box below"
str2 = "Alibaba"

isRightClickText = webtxt.find(str1)
IsAlibaba = webtxt.find(str2)

def testRightClick():
    assert isRightClickText > -1

def testIsAlibaba():
    assert IsAlibaba > -1
...