behat无法与隐形领域互动

时间:2017-05-09 13:52:55

标签: behat

有没有人对我的代码有什么问题有建议?这是代码:

     echo $this->find("css","#address-container")->getHtml();
     $field = $this->find("css","#address-container .region input");
     echo $field->isVisible() ? "I can see myself!!!" : "no can not see";
     echo $field->getAttribute('type');
     $field->setValue("ON");

当我运行测试时,结果是

  │         <legend>Address</legend>
  │         <div class="field city">
  │           <label>*City</label>
  │           <input class="required city" name="address_add[0][city]" value="" type="text">
  │         </div>
  │         <div class="field region">
  │           <label>*Prov./State</label>
  │           <input class="required region" name="address_add[0][region]" value="" type="text">
  │         </div>
  │         <div class="field country">
  │           <label>*Country</label>
  │           <input class="required country" name="address_add[0][country]" value="" type="text">
  │         </div>
  │     no can not seetext
  Element is not currently visible and so may not be interacted with
  Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
  System info: host: 'ubuntu', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.15-x86_64-linode81',                                            java.version: '1.8.0_121'
  Driver info: driver.version: unknown (WebDriver\Exception\ElementNotVisible)

我期待#address-container .region input可见。当我进入浏览器并手动完成这些步骤时,我确实看到区域字段可见。我检查过的其他事情是:

  • 页面上没有其他区域输入字段
  • 如果我将地区替换为城市或国家,一切正常
  • 没有延迟的javascript调用操作区域输入字段

还有什么可能导致隐藏区域字段?是否有更好的工具供我解决此问题?

更新

如果我像这样交换了地区和国家/地区的位置:

  │         <div class="field country">
  │           <label>*Country</label>
  │           <input class="required country" name="address_add[0][country]" value="" type="text">
  │         </div>
  │         <div class="field region">
  │           <label>*Prov./State</label>
  │           <input class="required region" name="address_add[0][region]" value="" type="text">
  │         </div>

然后区域变得可见。但如果改变我的behat代码寻找国家,现在它的国家是看不见的!

那么在真实的浏览器中看到的东西是不是很常见?

2 个答案:

答案 0 :(得分:0)

首先,问题是关于Selenium(因为你将它用作驱动程序:Driver info: driver.version: unknown (WebDriver\Exception\ElementNotVisible))。

使用Selenium,如果它的行为与您在浏览器中看到的行为不同...尝试添加一个小延迟。我可以sleep(1)或更聪明的东西。

很多问题来自于您在加载后尝试直接访问页面的事实(当某些JS还没有完成时)。

答案 1 :(得分:0)

问题是硒的显示器分辨率为800x600。所以这些元素实际上有时会超出视口。当我将显示器分辨率提高到1366x768时,一切正常。我可以使用selenium截图来调试它。