我将尝试简化我的问题。我正在使用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/