2016-07-25 17 views
0

私のAndroidデバイスでモバイル.apkファイルを開き、「USA」国を選択して「保存」ボタンをクリックしようとしています。Androidアプリケーションの自動化スクリプト:Appium、Selenium WebDriver、Java:NoSuchElementFoundException

import java.io.File; 
import java.net.MalformedURLException; 
import java.net.URL; 

import org.openqa.selenium.By; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.testng.annotations.Test; 

import io.appium.java_client.android.AndroidDriver; 

public class DemoC { 

AndroidDriver driver =null; 
DesiredCapabilities capabilities; 
File app = new  File("C:\\Users\\310250972\\workspace\\DreamMapper_2.5_Alpha_July_5_65.apk"); 

@Test(priority=1) 
public void invokeApp() throws MalformedURLException 
{ 
capabilities = new DesiredCapabilities(); 
capabilities.setCapability("automationName","Appium"); 
capabilities.setCapability("platformName","Android"); 
capabilities.setCapability("platformVersion","6.0.1"); 
capabilities.setCapability("deviceName","Galaxy S6"); 

capabilities.setCapability("app", app.getAbsolutePath()); 

//capabilities.setCapability("appPackage","com.philips.sleepmapper.root"); 
//capabilities.setCapability("appactivity","com.philips.sleepmapper.activity.SplashScreenActivity"); 

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 

} 

@Test(priority=2) 
public void selectCountry() throws InterruptedException{ 
Thread.sleep(20000); 
//driver.findElement(By.xpath("//android.widget.TextView[Contain]")) 
driver.findElement(By.xpath("//android.widget.TextView[contains(@text='United States')]")).click(); 
Thread.sleep(10000); 
driver.findElement(By.xpath("//android.widget.TextView[contains(@text='Save')]")).click(); 
// driver.findElement(By.name("Save")).click(); 
} 

}[I want to select "United States" and click on "Save" button][1] 

//テストメソッド "selectCountry()"が失敗します。 Nosuchelementfoundexception

答えて

1

containsでXpathクエリを使用する場合は、等号ではなくカンマ区切り記号を使用する必要があります。

だから、あなたの手順は次のようになります。

driver.findElement(By.xpath("//android.widget.TextView[contains(@text, 'United States')]")).click(); 
Thread.sleep(10000); 
driver.findElement(By.xpath("//android.widget.TextView[contains(@text, 'Save')]")).click(); 

この問題が解決しない場合は、要素が期待@Text値であり、実際にあることを確認するdriver.getPageSource();を使用して試みることができます。コマンドは既存の要素をすべて返し、要素が正しい属性で存在することを確認するために使用できます。

0

異なるインターネット速度や異なるファイルサイズなどの要因があるテストシナリオでテストする場合、正確な時間を待つように指示するので、可能な限り使用しないでください。代わりにWebDriverWaitを使用してください。

WebDriverWait wait = new WebDriverWait(driver, 60); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//android.widget.TextView[contains(@text='United States')]").cick(); 

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//android.widget.TextView[contains(@text='Save')]")).click(); 

WebDriverWait(このコードの60 secondsで)一定時間又はExpectedConditionsが満たされるのを待つためにappiumを伝えます。

関連する問題