我正在使用最新的78 chromedriver,我正在尝试通过CSS选择器在模式中定位元素, 看起来像这样
[data-qa ='generalTab']> [id ='ui-id-1']
,我能够使用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>
jQuery CSS
.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,文本,滚动直到可见。
发现驱动程序和Chrome 78存在问题:
Possible issue with Chromedriver 78, Selenium can not find web element of PDF opened in Chrome
答案 0 :(得分:1)
我遇到了同样的问题。我的调查导致我发现this个未解决的问题。此问题可能会在v80上解决。
就我而言,Thread.sleep()帮助了我。但这是胶带。我决定不使用它。
显式等待也无济于事。
所以我仍然停留在76。