使用Selenium和python,我试图自动化我的GUI,左窗格上有一个菜单,右窗格上有一个内容区域。以下是使用的版本: 硒:2.42.1 Python:2.7.8 Firefox:28
在左侧单击菜单时,会在内容区域中加载页面。菜单是多级可扩展的,如Windows资源管理器。单击1级,出现2级菜单。同样,当您单击2级菜单时,您会看到3级菜单。
我可以直到菜单中的第3级。在此级别,有一个屏幕名称。当我点击它时,预计屏幕将在页面右侧的内容区域中打开。但我在这里遇到了一个问题。内容区域中的页面未加载,Firefox无法响应。我必须手动杀死firefox。当我手动打开屏幕时,Firebug显示上下文区域的格式(不使用Selenium):
[div id="contentArea"]
[iframe id="main"]
[html class="dj_gecko dj_contentbox"]
dbody class="mainBody appworks tundra"]
[div id="mainBC"]
[div id="contentBC]
[div id="contentBottom"]
[span class="dijit dijitReset dijitLeft dijitInline dijitButton"]
[span class="dijitReset dijitRight dijitInline"]
[span class="dijitReset dijitInline dijitButtonNode"]
[button id="insertButton" class="dijitReset dijitStretch dijitButtonContents"]
[span class="dijitReset]
[span id="insertButton_label]
我想在内容区域中单击此insertButton,但是当我在Selenium中运行它时,框架未加载。
下面是我的python代码:
driver.find_element_by_xpath("//*[text()=\"Diameter\"]").click() # These are menus - level 1
driver.find_elements_by_xpath("//*[text()=\"Configuration\"]").click() # level 2
driver.find_element_by_xpath("//*[text()=\"Application Ids\"]").click() # level 3
try:
print "before switch"
self.driver.switch_to_frame(0) # There is only one frame in Contet area
print "after switch"
driver.find_element_by_css_selector("#insertButton").click()
print "after finding Insert"
#WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//*[text()=\"Insert\"]"))).click()
#driver.find_element_by_xpath("//*[text()=\"Insert\"]").click()
except Exception as e:
print e
没有异常被捕获但firefox停止响应。我也没有看到firefox中的“无响应脚本”警告。我怀疑这是Firefox,Python或Selenium的不兼容版本。我在Selenium页面上重新验证了它们,但它们似乎兼容。在找到插入符号后,我没有看到"在日志文件中。
答案 0 :(得分:0)
原来它是firefox的不兼容版本。最后我使用以下版本,它工作正常: Firefox 24 硒2.40 Python 2.7.8。