我试图点击容器内的卡片。我尝试过id,class,xpath,但它找不到它。我不确定还有什么可以尝试获得该元素。
这是我要点击的元素的代码:
<div class="mtable" id="w-card" status="83" entertainer="1799">
<div class="mtable-cell wc-gray-dark" id="widget-icon" style="border-color: ">
<div class="caption"><img src="/images/default_entertainer_image.jpg" class="caption-img"></div>
</div>
<div class="mtable-cell wc-white" id="widget-text">
<div>
<h6>
<span id="status-83" class="label label-default ">
<span class="entertainer-name">Testing</span>
<br>Testing100
<br>Last Seen: never
</span>
</h6>
</div>
<div id="timers">
<div id="lastChange" class="pull-left"></div>
<div id="circle" class="pull-right"></div>
</div>
</div>
</div>
selenium代码:
driver.findElement(By.xpath("//*[@id=\"w-card\"]")).click();
我已经对div的所有子元素运行了显示测试,webdriver也找到了它,但是说它没有显示?
答案 0 :(得分:1)
使用Explicit Wait等待元素可点击。
WebDriverWait driverWait = new WebDriverWait(driver, timeOutInSeconds);
wait.until(ExpectedConditions.elementToBeClickable(By.id("w-card"))).click();
答案 1 :(得分:0)
尝试使用显式等待
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("w-card"))).click();
在点击它之前,这将等待最多20秒才能看到该元素。
答案 2 :(得分:0)
我认为您的Div不可见。因此,对于类似10次迭代并且在检查isDisplayed()条件内部,以少于3秒的间隔运行for循环的少数事情,它是否会被显示。此外,如果一切都失败然后尝试javascript click..thats从未推荐但仍然保存我们
答案 3 :(得分:0)
也许有一个 iframe ,所以切换到那个框架。
`driver.switchTo().frame(driver.findElement(by));`