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

时间:2015-09-29 12:34:22

标签: selenium selenium-webdriver

我收到了一个错误:

  

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

所以我添加了“wait”对象等待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:Timed   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:

enter image description here

感谢

2 个答案:

答案 0 :(得分:0)

我不确定您选择的预期条件是否正确。您使用的课​​程是选择课程。你能试试elementToBeSelected(WebElement元素)吗?

答案 1 :(得分:0)

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

  • display=none
  • visibility=hidden
  • visibility=collapse

如果您可以在计算选项卡上找到任何这些值,则必须使用JS单击该元素,或者以某种方式更改元素的CSS值 - Selenium将拒绝与元素交互,无论它的实际可见性。 (我怀疑问题将是“jcf-hidden”类)

检查元素时,请在右侧的Chrome检查器中切换到此选项卡: Chrome inspector
并查找列表中提到的任何值。