AndroidDriver
がキャッチブロックのOKボタン(android.widget.Button[@text='OK']
)が表示されるのを待つAppiumでこの問題が発生しています。ここでは、コードは次のとおりです。ドライバが要素が表示されるのを待機しません。
WebDriverWait wait = new WebDriverWait(driver, 120);
if(networkConnection.wifiEnabled()){
try{
WebElement msg = driver.findElementByXPath("//android.widget.TextView[@text='No network connection detected. Please check your Wi-Fi or mobile settings.']");
if(msg.isDisplayed()){
wait.until(ExpectedConditions.visibilityOf(driver.findElementByXPath("//android.widget.Button[@text='OK']")));
WebElement clickOK = driver.findElementByXPath("//android.widget.Button[@text='OK']");
clickOK.click();
System.err.println("420;Download detailing file using WiFi connection;Application should be able to download the detailing file to the device;(Result=Failed!)");
}
}
catch(NoSuchElementException e){
wait.until(ExpectedConditions.visibilityOf(driver.findElementByXPath("//android.widget.Button[@text='YES']")));
WebElement clickYes = driver.findElementByXPath("//android.widget.Button[@text='YES']");
clickYes.click();
wait.until(ExpectedConditions.visibilityOf(driver.findElementByXPath("//android.widget.Button[@text='OK']")));
WebElement clickOK = driver.findElementByXPath("//android.widget.Button[@text='OK']");
if(clickOK.getAttribute("text").contains("successfully")){
clickOK.click();
System.out.println("420;Download detailing file using WiFi connection;Application should be able to download the detailing file to the device;(Result=Passed!)");
}
}
}
私は120秒間待つようにそれを設定しているが、私はまだこのNoSuchElementException
エラーを取得:
Exception in thread "AWT-EventQueue-0" org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 2.42 seconds
ここではappiumログです:
> info: [debug] [BOOTSTRAP] [debug] Got command of type ACTION
> info: [debug] [BOOTSTRAP] [debug] Got command action: find
> info: [debug] [BOOTSTRAP] [debug] Finding //android.widget.Button[@text='OK'] using XPATH with the contextId: multiple: false
> info: [debug] [BOOTSTRAP] [debug] Returning result: {"value":"Could not find an element using supplied strategy. ","status":7}
> info: [debug] Condition unmet after 2407ms. Timing out.
> info: [debug] Responding to client with error: {"status":7,"value":{"message":"An element could not be located on the page using the given search parameters.","origValue":"Could not find an element using supplied strategy. "},"sessionId":"147e3950-c6f9-4790-8f6f-e9ed70a9aaa9"}
> info: <-- POST /wd/hub/session/147e3950-c6f9-4790-8f6f-e9ed70a9aaa9/element 500 2419.570 ms - 230
私はExpectedConditions
の下に他の方法、例えばelementToBeClickable
などを試しました。また、Thread.sleep()も使用しました。私はまだこの原因を知らない。ドライバのタイムアウトはこのエラーの原因ですか?私が掲示したコードだけでは十分ではないと私はより多くを投稿することができます。前もって感謝します!
はあなたが待っている前に初期化を入れ替えることができ要素の初期化の一部である必要があります。 wait.until(ExpectedConditions.visibilityOf(driver.findElementByXPath( "android.widget.Button [@ text = 'OK']"))); clickOK.click(); – karthick23
私はお試しください。すぐにこれを行う – Daniel
エラーがまだ発生します。これについて他のアイデアがありますか? – Daniel