我将我的测试用例从Selenium IDE导出到Python&使用脚本将它们从Unittest转换为Py.test。在进行一些手动更改时,我偶然发现了一个需要解决方案的问题。
在IDE中,我有一个场景,我访问WebUI中的页面,存储该网页内容,&验证某个驱动程序是否存在:
storeBodyText | myBody |
storeEval | javascript{storedVars['myBody'].search("driver-video");} | isVideo
从这里,我访问“设置”页面并检查是否存在某些选项。如果在上面的代码中找到了视频驱动程序,则“设置”页面上应该存在该选项的链接。如果没有,那么链接将不会出现,我不需要验证它是否存在。我在IDE中处理如下:
if | storedVars['isVideo']!=-1
waitForText | link=Display | Display
endIf
然后我使用'Python / unittest / WebDriver'导出我的代码并运行我创建的转换脚本,它将unittest代码转换为Py.test。这留下了以下相关代码:
myBody = driver.find_element_by_tag_name("BODY").text
# ERROR: Caught exception [ERROR: Unsupported command [getEval | javascript{storedVars['myBody'].search("driver-video");} | ]]
.
.
.
# ERROR: Caught exception [unknown command [if]]
WebDriverWait(driver, 60).until(
expected_conditions.text_to_be_present_in_element((By.LINK_TEXT, "Display"), "Display")
)
# for i in range(60):
# try:
# if "Display" == driver.find_element_by_link_text("Display").text: break
# except: pass
# time.sleep(1)
# else: self.fail("time out")
# ERROR: Caught exception [unknown command [endIf]]
错误不是来自我的脚本。将测试用例导出到'Python / unittest / WebDriver'时出现错误。当然,完全可以预料到我使用java脚本来执行操作。现在,我正在尝试将其转换为Py.test并执行与我在Selenium IDE中所做的相同的操作。我正在寻找一种方法...
即
isVidPres = WebDriverWait(driver,60).until(
assert re.search("^[\s\S]*driver-video[\s\S]*$",driver.find_element_by_css_selector("myBody").text
)
如果有必要,我愿意使用try / catch循环,但是如果可能的话,我希望在没有它的情况下执行此操作。有谁知道如何执行此操作?提前感谢任何可以帮助我的人。
答案 0 :(得分:0)
我能够自己找到解决这个问题的方法。认为发布它可能是一个好主意,以防其他人遇到此问题,同时负责将Selenese代码导出到 Python / unittest / Web Driver ,然后将其转换为 Py.test < / strong>代码。
为了搜索页面以验证是否存在某些驱动程序,我使用了以下代码:
systemPage = driver.find_element_by_css_selector("BODY").text
if re.match("^[\s\S]*xorg-driver-video-intel[\s\S]*$", systemPage):
isVideoPres = True
else:
isVideoPres = False
驱动程序存储在表中,但不保证表中驱动程序[如果已安装]的位置在同一位置。因此,我存储了页面的内容。执行正则表达式搜索驱动程序的名称。
对于我在安装驱动程序时验证关联链接的部分,我使用了以下代码:
if isVideoPres == True:
WebDriverWait(driver, 60).until(
expected_conditions.text_to_be_present_in_element((By.LINK_TEXT, "Display"), "Display")
)
elif isVideoPres == False:
WebDriverWait(driver, 60).until(
expected_conditions.invisibility_of_element_located((By.LINK_TEXT, "Display"))
)
在此代码中,我检查是否找到了视频驱动程序。如果是这样,我确认该链接将我带到&#34;显示&#34;设置可供用户单击。如果找不到驱动程序,那么我会在设置页面上验证链接是否存在。