2019-06-28 02:56:02 +00:00
|
|
|
from seleniumbase import BaseCase
|
|
|
|
|
|
|
|
|
|
|
|
class Tweet(object):
|
|
|
|
def __init__(self, tweet=''):
|
2019-06-28 22:41:57 +00:00
|
|
|
namerow = tweet + 'div.media-heading '
|
2019-06-28 02:56:02 +00:00
|
|
|
self.fullname = namerow + '.fullname'
|
|
|
|
self.username = namerow + '.username'
|
2019-06-28 22:41:57 +00:00
|
|
|
self.date = tweet + 'div.media-heading .heading-right'
|
|
|
|
self.text = tweet + '.status-content-wrapper .status-content.media-body'
|
|
|
|
self.retweet = tweet = '.retweet'
|
2019-06-28 02:56:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
class Profile(object):
|
|
|
|
fullname = '.profile-card-fullname'
|
|
|
|
username = '.profile-card-username'
|
|
|
|
protected = '.protected-icon'
|
|
|
|
verified = '.verified-icon'
|
2019-06-28 22:41:57 +00:00
|
|
|
banner = '.profile-banner'
|
|
|
|
bio = '.profile-bio'
|
2019-06-28 02:56:02 +00:00
|
|
|
|
|
|
|
|
2019-06-28 22:42:53 +00:00
|
|
|
class Timeline(object):
|
|
|
|
newest = 'div[class="show-more status-el"]'
|
|
|
|
older = 'div[class="show-more"]'
|
|
|
|
end = '.timeline-end'
|
|
|
|
none = '.timeline-none'
|
|
|
|
protected = '.timeline-protected'
|
|
|
|
|
|
|
|
|
2019-06-28 02:56:02 +00:00
|
|
|
class BaseTestCase(BaseCase):
|
|
|
|
def setUp(self):
|
|
|
|
super(BaseTestCase, self).setUp()
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
super(BaseTestCase, self).tearDown()
|
|
|
|
|
|
|
|
def open_nitter(self, page=''):
|
|
|
|
self.open(f'http://localhost:5000/{page}')
|
|
|
|
|
|
|
|
def search_username(self, username):
|
|
|
|
self.open_nitter()
|
|
|
|
self.update_text('input', username)
|
|
|
|
self.submit('form')
|
|
|
|
|
|
|
|
|
|
|
|
def get_timeline_tweet(num=1):
|
2019-06-28 22:41:57 +00:00
|
|
|
return Tweet(f'#tweets > div:nth-child({num}) ')
|