使用Chromedriver 78.0.3904.70定位器时出现问题

时间:2019-11-05 18:48:56

标签: selenium selenium-chromedriver

我正在使用最新的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&amp;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 &amp; 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

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我的调查导致我发现this个未解决的问题。此问题可能会在v80上解决。 就我而言,Thread.sleep()帮助了我。但这是胶带。我决定不使用它。
显式等待也无济于事。 所以我仍然停留在76。