我有应用程序,用户输入代码,在代码的基础上弹出一个结果。
但我发现在可见弹出的基础上应用代码有困难。不确定出现哪个弹出,这仅取决于代码。
这是html结构:
<div class="enter-code" style="">
<div class="code-matched" style="display:none;">
<div class="hundred" style="display:none;">
<div class="thousand" style="display:none;">
<div class="five thosand" style="display:none;">
<div class="one lakh" style="display:none;">
<div class="code-not-matched" style="">
<span>The code you entered doesn’t match any in our system, please try again.</span>
</div>
<div class="code-box" style="display: none;">
</div>
如果用户输入代码并且它与我们的系统匹配,则会在弹出窗口中显示一条消息,如果不存在,则会显示相同的消息。
这是代码,在Eclipes中做了什么。
driver.findElement(By.name("nmb")).clear();
driver.findElement(By.name("nmb")).sendKeys(a1[i]);
driver.findElement(By.id("reward")).click();
Thread.sleep(6000);
if( driver.findElement(By.xpath("//div[@class='code-matched' or @class='code-for-first' or @class='code-for-second' or @class='code-for-third' or @class='code-for-fouth' or @class='code-not-matched']")).isDisplayed()){
System.out.println("Hello 1");
}
else{
System.out.println("Hello 1.1");
}
我在IF条件下应用条件,但它始终在ELSE条件下打印RESULT。
答案 0 :(得分:1)
弹出窗口在driver.getWindowHandles()
中创建新的窗口句柄。您可以使用它来确定是否出现弹出窗口
Set<String> handles = driver.getWindowHandles();
if (handles.size() > 1) {
System.out.println("Hello 1");
}
要对弹出窗口执行操作,您需要切换到它
String parentHandle = driver.getWindowHandle();
driver.findElement(By.name("nmb")).clear();
driver.findElement(By.name("nmb")).sendKeys(a1[i]);
driver.findElement(By.id("reward")).click();
// find all pop ups
List<WebElement> popUps = driver.findElements(By.cssSelector(".enter-code > div"));
// wait for pop up to be displayed
long startTime = System.currentTimeMillis();
boolean found = false;
do {
for (WebElement popUp : popUps) {
if (popUp.isDisplayed()) {
String class = popUp.getAttribute("class");
found = true;
break;
}
}
} while (!found && (System.currentTimeMillis() - startTime) / 1000 < 5);
// switch to pop up
for (String handle : handles) {
if (!handle.equals(parentHandle))
{
driver.switchTo().window(handle);
}
}
// switch back to the old window
driver.close(); // close only the pop up
driver.switchTo().window(parentHandle);
do while
循环将工作5秒或直到您找到弹出窗口,越快。 for
循环将遍历弹出窗口,直到显示其中一个。
答案 1 :(得分:1)
首先切换到弹出窗口,然后对弹出窗口执行操作,然后切换回默认页面。
请尝试以下方法: -
......Your code upto pop-up appear ....
driver.switchTo().alert();
.... Your code in between actions on pop-up ....
driver.switchTo().defaultContent();
希望这会对你有所帮助:)。