JMeter WebDriver - 无法找到元素

问题描述 投票:0回答:1
jmeter performance-testing
1个回答
0
投票

Selenium 能够使用您提供的代码片段查找元素。

您可以自行检查,将以下代码放入WebDriver Sampler中:

WDS.sampleResult.sampleStart()
def html = '<div id="orgData" data-bind="with: orgData"></div>\n' +
        '<div id="page" class="page">\n' +
        '<header id="header" class="header-container">\n' +
        '<div class="message-area" data-bind="with: statusboard.dynamicMessageArea, css: { \'has-message\': statusboard.dynamicMessageArea.rotatingCalls().length > 0,\n' +
        '\'code\': (statusboard.dynamicMessageArea.displayedCall().isCode()) || (statusboard.dynamicMessageArea.displayedCall().isEmergency() && statusboard.dynamicMessageArea.displayedCall().isCallRedColor() == true) ,\n' +
        '\'callBlueColor\': statusboard.dynamicMessageArea.displayedCall().isCode() && statusboard.dynamicMessageArea.displayedCall().isCodeBlueColor() == true,\n' +
        '\'callOrangeColor\': statusboard.dynamicMessageArea.displayedCall().isEmergency() && statusboard.dynamicMessageArea.displayedCall().isEmergencyOrangeColor() == true && statusboard.dynamicMessageArea.displayedCall().isCode() === false}">\n' +
        '<div id="dmaCallIcon" class="header-container__message-icon icon" data-bind="css: { \'call-code\': displayedCall().iconState() === 1, \'call-emergency\': displayedCall().iconState() === 2 }"></div>\n' +
        '<div>\n' +
        '<div class="message-area__call ellipsis" id="dmaCall" data-bind="text: displayedCall().name"></div>\n' +
        '<p class="message-area__spacer">&bull; </p>\n' +
        '<div class="message-area__room ellipsis" id="dmaLocation" data-bind="text: displayedCall().activeLocation().displayName() + \', \' + displayedCall().unit().longName()"></div>\n' +
        '</div>\n' +
        '</div>\n' +
        '<div class="controls">\n' +
        '<div class="units" data-bind="with: dialogHelper.configSettingsDialog.model.unitSelector">\n' +
        '<div class="selectedUnits">\n' +
        '<div>\n' +
        '<p><span id="labelSavedSelections" data-bind="visible: savedUnits().length > 0, text: savedUnits().length + \' of \' + availableUnitsInSavedCampus().length + \' units\'"></span></p>\n' +
        '<p data-bind="visible: savedUnits().length == 0" id="labelNoSelections">NO UNITS SELECTED</p>\n' +
        '</div>\n' +
        '<div>\n' +
        '<p class="selectedCampus" data-bind="visible: savedCampusName().length > 0 ,text: savedCampusName" id="labelSelectedCampus"></p>\n' +
        '<p data-bind="visible: savedCampusName().length == 0" id="labelNoCampusSelections">NO CAMPUS SELECTED</p>\n' +
        '</div>\n' +
        '</div>\n' +
        '</div>\n' +
        '<div class="views" data-bind="css: dialogHelper.savedViewClass">\n' +
        '<div>\n' +
        '<a id="savedViewButton" href="#" data-bind="click: dialogHelper.showSavedViewMenu">\n' +
        '<i class="icon savedViews">\n' +
        '<i class="icon changes" data-bind="css: { \'hidden\': !globalHelper.unsavedChanges() }"></i>\n' +
        '</i>\n' +
        '</a>\n' +
        '</div>\n' +
        '</div>\n' +
        '<div class="settings">\n' +
        '<a id="settingsButton" href="#" data-bind="click: dialogHelper.showSettingsMenu">\n' +
        '<i class="icon settings"></i>\n' +
        '</a>\n' +
        '</div>\n' +
        '<div class="logo">\n' +
        '<img src="/statusboard/svg/hr-logo-blue-no-tag.svg" />\n' +
        '</div>\n' +
        '</div>\n' +
        '</header>'
new File('page.html').text = html
WDS.browser.get('file://' + System.getProperty('user.dir') + '/page.html')
def element = WDS.browser.findElement(org.openqa.selenium.By.id('settingsButton'))
WDS.log.info('Settings button present: ' + element.isEnabled())
WDS.sampleResult.sampleEnd()

您应该在 jmeter.log 文件中看到以下行

INFO c.g.j.p.w.s.WebDriverSampler: Settings button present: true

因此,您要查找的元素可能位于 iframeShadow Dom 中。我们需要查看完整页面源代码才能提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.