Java selenium中的BFComponentStateException是什么?

Java selenium中的BFComponentStateException是什么?,java,selenium-webdriver,Java,Selenium Webdriver,在Salesforce Lightning应用程序中使用Selenium Select从下拉列表中选择值时,我收到以下错误消息 com.salesforce.base.selenium.exceptions.bComponentStateException:无法[单击][.//选项[@value=“Low”]]。组件[不可见] HTML代码如下所示: <select class="slds-input select" size="1" aria-describedby="" id="117

在Salesforce Lightning应用程序中使用Selenium Select从下拉列表中选择值时,我收到以下错误消息

com.salesforce.base.selenium.exceptions.bComponentStateException:无法[单击][.//选项[@value=“Low”]]。组件[不可见]

HTML代码如下所示:

<select class="slds-input select" size="1" aria-describedby="" id="117:4743;a" data-aura-rendered-by="122:4743;a" data-interactive-lib-uid="25"><!--render facet: 123:4743;a-->
<option label="High" value="High" class="optionClass">High</option>
<option label="Low" value="Low" class="optionClass">Low</option>
<option label="Normal" value="Normal" class="optionClass">Normal</option>
</select>

高
低
正常的

它看起来像是自定义SalesForce异常。无论如何,正如错误所说的,这是可见性的问题,所以要解决它,您应该在对该元素执行操作之前放置一些等待机制。以下是一个功能,您可以添加:

 public WebElement waitForElementVisibilityByCss(String css, int timeInSeconds) {
        return (new WebDriverWait(getDriver(), timeInSeconds)).until(
                ExpectedConditions.visibilityOfElementLocated(By.cssSelector(css)));
    }
你可以为你的定位器调用这个函数。在您的情况下,将其称为:

waitForElementVisibilityByCss("[label='Low']",30)

试着让我们知道它是否有效。

我不熟悉selenium,但这听起来像是一个通用的可见性问题。你把剧本放哪儿了?如果只有一个
选项可用,是否也会发生这种情况?下拉元素可见,同一页面的其他元素也被访问。文本框工作正常,但不知道为什么下拉列表不工作。当您手动检查时,它可能会显示出来。但脚本可能以不同的方式看待它,这就是为什么我们在定位器加载和可见性中放置等待来处理此类同步问题。