我正在使用最新的78 ChromeDrive,我试图通过CSS选择器定位模态中的元素,看起来像这样
[数据-qa='一般选项卡']
,我能够使用chrome驱动程序76运行我的测试。现在使用更新的驱动程序,我有以下异常:
org. openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素:
,元素可见,选择器正确,我需要在不降级到76的情况下运行测试。
该元素位于iframe内,我正在切换到iframe:
private void navGeneralTab() {
focusActions.focusPageContent();
focusActions.focusIframeModal(thePackageSetupModalIframe());
scrollIntoView(theGeneralTab());
try {
TimeUnit.SECONDS.sleep(5);
click(theGeneralTab());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
focusActions.focusIframeModal(regPackagesUi.thePackageSetupModalIframe());
public void focusIframeModal(By by)
{
waitActions.waitForPageLoad();
WebElement element = driver().findElement(by);
driver().switchTo().frame(element);
}
<iframe name="jqueryDialogIframe" id="jqueryDialogIframe-0" class="jqueryDialogIframe" data-qa="iframeDialog-0" src="regsetup/inventoryItem.do?inventoryitem_id=1366&displayOrder=1" style="width:100%;height:99%" frameborder="0">
<body id="iframe" class="padded 5889_autow99h">
...
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" role="tablist">
<li data-qa="generalTab" class="ui-state-default ui-corner-top ui-tabs-active ui-state-active" role="tab" tabindex="0" aria-controls="general" aria-labelledby="ui-id-1" aria-selected="true"><a href="#general" class="ui-tabs-anchor" tabindex="-1" id="ui-id-1">General</a></li>
<li data-qa="pricesTab" class="ui-state-default ui-corner-top" role="tab" tabindex="-1" aria-controls="pricesAndFees" aria-labelledby="ui-id-2" aria-selected="false"><a href="#pricesAndFees" class="ui-tabs-anchor" tabindex="-1" id="ui-id-2">Prices & Fees</a></li>
<li data-qa="advancedTab" class="ui-state-default ui-corner-top" role="tab" tabindex="-1" aria-controls="advanced" aria-labelledby="ui-id-3" aria-selected="false"><a href="#advanced" class="ui-tabs-anchor" tabindex="-1" id="ui-id-3">Advanced</a></li>
<li data-qa="sessionBookingTab" class="ui-state-default ui-corner-top" role="tab" tabindex="-1" aria-controls="sessionBooking" aria-labelledby="ui-id-4" aria-selected="false"><a href="#sessionBooking" class="ui-tabs-anchor" tabindex="-1" id="ui-id-4">Session Booking</a></li>
<li data-qa="profileValuesTab" class="ui-state-default ui-corner-top" role="tab" tabindex="-1" aria-controls="profileValues" aria-labelledby="ui-id-5" aria-selected="false"><a href="#profileValues" class="ui-tabs-anchor" tabindex="-1" id="ui-id-5">Profile Values</a></li>
</ul>
</iframe>
</body>
JQueryCSS
.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a {
cursor: text;
}
我试图点击常规选项卡,但我找不到它。
有什么想法吗?,有人遇到过这个问题吗,元素没有定位到?,我已经尝试过使用xpath,id,text,滚动直到可见。
发现这是司机的问题,Chrome78:
ChromeDrive 78可能出现问题,Selenium找不到PDF的网页元素Chrome
我也遇到了同样的问题。我的调查把我引向了这个公开的问题。这个问题可能会在v80修复。在我的例子中,Thread.睡眠()帮助了我。但这是管道胶带。我决定不使用它。
显式等待也没有帮助。所以我仍然停留在76。