我将尝试简化我的问题。我正在使用py.test和appium编写测试程序。现在:

在应用程序中,我有4种媒体格式:视频,音频,图像和文档。
我有一个带有上一个,下一个,播放,停止按钮的控制界面。
每种媒体格式都有唯一的ID,例如

video_playbutton,audio_playbutton,document_playbutton,image_playbutton,video_stopbutton,audio_stopbutton等

但是我要做的操作对他们所有人都是相同的,例如按播放按钮。

我可以像这样显式地给每个按钮播放地址

find_element_by_id("video_playbutton")


当我想按下其他播放按钮时,我每次都必须重复上述操作。像这样:

find_element_by_id("video_playbutton")
find_element_by_id("audio_playbutton")
find_element_by_id("image_playbutton")
find_element_by_id("document_playbutton")


而且因为我是从另一个脚本中调用此函数,所以我必须首先区分得到的字符串,例如:

def play(mediatype):
    if mediatype == "video"
          el = find_element_by_id("video_playbutton")
          el.click()
    if mediatype == "audio"
          el = find_element_by_id("audio_playbutton")
          el.click()
    if .....


解决这种情况的最佳方法是什么?我想避免数百个if语句,因为也有stop,next,previous等按钮。

我是在寻找这样的东西

def play(mediatype)
    find_element_by_id(mediatype.playbutton)

最佳答案

您可以将选择器和操作分成两个字典,以更好地进行缩放。否则,映射最终将变得巨大。这是例子。

dictMedia = {'video':['video_playbutton', 'video_stopbutton','video_nextbutton'], 'audio':['audio_playbutton', 'audio_stopbutton', 'audio_nextbutton']}
dictOperations = {'play':0, 'stop':1, 'next':2}
def get_selector(mediatype, operation):
    return dictMedia[mediatype][dictOperations[operation]]

print get_selector('video', 'play')


PS:以上操作不会检查未找到密钥的错误。
但是,我仍然觉得,如果特定于媒体的操作增加,则页面对象模型会更好。

关于python - Python如何避免许多if语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37792150/

10-12 21:20