提问者:小点点

硒等待不解决错误“元素当前不可见”


我收到一个错误:

元素当前不可见,因此可能无法与命令持续时间或超时时间交互:63毫秒

所以我添加了“等待”对象来等待html obj加载:

   val wait: WebDriverWait  = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.elementToBeClickable(By.id("company_id")))

   val selectCompany = new Select(driver.findElement(By.id("company_id")))
    selectCompany.selectByValue("975")

但我仍然得到错误:

线程"main"org. openqa.selenium.TimeoutException中的异常:等待元素可点击10秒后超时:By.id:company_id

我不明白,因为html是:

<select class="upload_company_id jcf-hidden" id="company_id" name="company_id" size="2"><option value="">Select account...</option>
<option value="100">100</option>
<option value="101">101</option>
<option value="104">104</option>
<option value="975">105</option>

这是更多的html:

谢谢


共2个答案

匿名用户

我不确定您选择的预期条件是否正确。您使用的类是select class。您可以尝试elementToBeS选择(WebElement元素)吗?

匿名用户

您需要检查的是您正在单击的元素的计算CSS值。(在Chromeweb检查器中选择右侧的计算选项卡)。Selenium认为元素是隐藏的,如果为元素设置了以下任何CSS值,则无法与之交互:

  • 显示=无
  • 可见性=隐藏
  • 可见性=折叠

如果你能在计算选项卡上找到这些值中的任何一个,你将不得不使用JS来单击元素,或者以某种方式更改元素的CSS值——Selenium将拒绝与元素交互,而不管它的实际可见性如何。(我怀疑问题将出在“jcf隐藏”类上)