繁体   English   中英

Selenium Webdriver错误“元素无法在点处单击” PrimeFaces SelectOneMenu

[英]Selenium Webdriver error “Element is not clickable at point” PrimeFaces SelectOneMenu

我已经检查了许多有关此错误的问题,但是我发现那里没有一种解决方案对我有用。 我对SelectOneMenu元素的测试适用于FF和IE,但不适用于Chrome。

driver.findElement(By.id("csbform:bankszamlaSelectOne_label")).click();

我不知道如何解决该问题,但是我知道这是什么。 当我选择列表的一个选项时,主要面孔下拉列表组件(selectonemenu)进行ajax调用,这将更改另一个下拉菜单的选项(这是id =“ csbform:bankszamlaSelectOne_label”的选项),我应该等待其完成。 我使用以下函数来等待ajax完成: 可以在此处找到该函数,并且该函数在FF和IE中就像魅力一样工作。

我的主要问题是我找不到适合Chrome的解决方案。 我不想在测试中使用任何thread.Sleep()函数,因为这不是等待未知时间的解决方案。 这将是1-2秒,但由于Web应用程序正在运行的服务器的负载而将更多。 因此,这是不可预测的。

我尝试了javascript执行程序来向上或向下滚动,但是它没有用,我还尝试了期望条件,等待元素可单击,但是什么也没有。

请帮助我,因为我没有其他解决办法。

发生问题的html代码:

<h:panelGroup layout="block" styleClass="input-row input-select">
                                        <h:outputLabel styleClass="label" value="#{msgs.Partner}"/>
                                        <h:panelGroup layout="block" styleClass="input-container">
                                            <p:selectOneMenu effectSpeed="120"  id="partnerSelectOne" value="#{csopBeszFelvitelManagedBean.selectedPartner}" styleClass="fullwidth">
                                                <f:selectItems value="#{csopBeszFelvitelManagedBean.partnerListaSelectItems}"/>
                                                <f:converter converterId="EntityConverter"/>
                                                <p:ajax update="bankszamlaSelectOne, csodeljaras"/>
                                            </p:selectOneMenu>
                                            <p:message for="partnerSelectOne" />
                                        </h:panelGroup>
                                    </h:panelGroup>

                                    <h:panelGroup layout="block" styleClass="input-row input-select">
                                        <h:outputLabel styleClass="label" value="#{msgs.Szamla}"/>
                                        <h:panelGroup layout="block" styleClass="input-container">
                                            <p:selectOneMenu effectSpeed="120"  id="bankszamlaSelectOne" value="#{csopBeszFelvitelManagedBean.selectedBankszamla}" styleClass="fullwidth">
                                                <f:selectItems value="#{csopBeszFelvitelManagedBean.bankszamlaListaSelectItems}"/>
                                                <f:converter converterId="EntityConverter" />
                                                <p:ajax update="partnerSelectOne" />
                                            </p:selectOneMenu>
                                            <p:message for="bankszamlaSelectOne" />
                                        </h:panelGroup>
                                    </h:panelGroup>

问题已经解决。 有一个primefaces block-ui元素会阻止屏幕显示某些毫秒。 它足够快,对于用户来说是不可见的,并且消失得还不够快,但是ajax队列已经清空,但是我的测试失败了。 我为该blocker元素提供了唯一的ID,现在我正在使用Expectedconditions.invisibilityof()函数来确保当我尝试单击第二个selectonemenu时屏幕上没有block-ui元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM