我正在尝试使用Java运行一些Selenium测试,但是某些字段被另一个字段阻塞,并且无法单击。问题是页面源中实际上不存在其他字段。
validate = {
"match": ["1", "1.5", "10", "10.5", "102"],
"nomatch": ["0", "0.", "0.5", "0.55", "102.", "102.5", "102.55", "foo"]
}
matches = all(match(s) for s in validate["match"])
nomatches = any(match(s) for s in validate["nomatch"])
print( matches and not(nomatches))
#True
没有元素带有其他标签(id,class等)。那么这个神秘的领域是什么?
有趣的是,如果我尝试先访问其他字段,则会得到不同的模糊字段,该字段在页面上也不存在。如:
The error is: Element <select id="pets" class="sumo form-control SumoUnder" name="pets"> is not clickable at point (1025.833351135254,677.4000244140625) because another element <span> obscures it
以交互方式观看测试无济于事;引发错误时,看不到任何阻塞元素的东西。
这些幻影字段来自哪里,如何阻止它们阻止我的字段?
编辑:我发现SumoSelect正在添加这些字段。当您查看页面源代码时,它们不会显示,但是如果您保存页面并在本地打开它们,它们将在那里。
<p class="CaptionCont SelectBox">
答案 0 :(得分:0)
如果无法点击,则可能是可选的。
Select pets = new Select(driver.findElement(By.id("pets")));
pets.selectByIndex(1);
答案 1 :(得分:0)
使用JS库增强Select
时-您需要查看JS库创建的最终DOM。对于SumoSelect-选择框本身的CSS是:
<p class="CaptionCont SelectBox" title=" Volvo">
<span> Volvo</span>
<label><i></i></label>
</p>
看到span
了吗?如果要单击下拉菜单,则需要单击该跨度。
答案 2 :(得分:0)
尝试使用JavaScript执行器单击。
参考链接:-http://learn-automation.com/click-in-selenium-webdriver-using-java-script/