我有一个下拉列表,当我单击任何下拉值时,将打开一个模态获取;当我在模态之外单击时,它将关闭。如何使用Selenium WebDriver处理它?</ p>
这是我的模态代码
<div class="modal fade bd-example-modal-sm show" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" style="display: block;">
<div class="modal-dialog modal-sm">
<div class="modal-content">You click on Dropdown hover Option
</div>
</div>
我尝试使用以下代码
driver.switchTo().defaultContent();
和
driver.switchTo().alert().dismiss();
但是两者都不起作用。
答案 0 :(得分:1)
如果您不想按Esc键,则可以使用以下命令单击已创建以覆盖页面其余部分的div:
driver.get("https://demo.stqatools.com/MouseHover.php");
WebElement hoverButton = driver.findElement(By.cssSelector(".dropbtn"));
WebElement linkOne = driver.findElement(By.cssSelector(".dropdown-content > a"));
//Activate modal dialogue
Actions action = new Actions(driver);
action.moveToElement(hoverButton).perform();
wait.until(ExpectedConditions.visibilityOf(linkOne));
action.moveToElement(linkOne).click().perform();
//Dismiss modal dialogue
driver.findElement(By.cssSelector(".show")).click();
答案 1 :(得分:0)
这不是alert,而只是DOM的正常片段,由于CSS styling
看起来像是模式弹出窗口因此,您所需要做的就是使用元素(例如文本)来定位元素,相关的XPath locator将类似于:
//div[contains(text(),'You click on Dropdown hover Option')]
也可以通过WebDriverWait来“等待”直到弹出窗口存在/难以处理,
new org.openqa.selenium.support.ui.WebDriverWait(driver, 10)
.until(
ExpectedConditions.elementToBeClickable(
By.xpath("//div[contains(text(),'You click on Dropdown hover Option')]")))
.click();
答案 2 :(得分:-1)
最简单的方法-单击页面上的一些静态文本。 尝试单击页面标题(如果存在)。