Appium,WebDriver
我是Appium的新手。我尝试使用Appium在移动设备上执行我的硒脚本。但我得到了像下面Appium,WebDriver
org.openqa.selenium.WebDriverException的错误:返回值不能 转换为
WebElement: {ELEMENT=0.5768692365381867-1}
我使用的代码是如下: -
AppiumDriver d;
@BeforeClass
public void setUp() throws Exception
{
//Set Capabilities
DesiredCapabilities caps=new DesiredCapabilities();
caps.setCapability("deviceName", "Celkon A35K Remote");
caps.setCapability("platformName", "Android");
caps.setCapability("platformVersion", "4.4.2");
caps.setCapability("browserName", "Browser");
d = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps);
d.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);
d.manage().timeouts().pageLoadTimeout(120,TimeUnit.SECONDS);
}
@Test
public void testFBLogin() throws Exception
{
//Load web page
d.get("https://www.facebook.com/");
//Enter user name
d.findElementByName("email").sendKeys("Appium");
//Enter password
d.findElementByName("pass").sendKeys("Appium");
//Click on Login
d.findElementByName("login").click();
Thread.sleep(10000);
}
@AfterClass
public void tearDown()
{
//Close browser
d.quit();
}`script:
请替换容量:
caps.setCapability("browserName", "Browser");
本:
caps.setCapability("browserName", "Chrome");
Appium队没有关一些变化:
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
声明AndroidDriver d;而不是AppiumDriver d。
使用 caps.setCapability(CapabilityType.BROWSER_NAME, “铬”);
您也可以替换AppiumDriver到AndroidDriver如果你的目的只是为了运行在Android设备上该脚本,否则,如果你想在iOS和Android都请使用Appium运行。
RemoteWebDriver:此驱动程序类从上游硒项目直接来了。这是一个非常通用的驱动程序,初始化驱动程序意味着向Selenium集线器发出网络请求以启动驱动程序会话。由于Appium在客户端 - 服务器模型上运行,Appium使用它来初始化驱动程序会话。但是,不建议直接使用RemoteWebDriver,因为有其他可用的驱动程序可提供附加功能或便利功能。
AppiumDriver:此驱动程序类从RemoteWebDriver类继承,但它在那些在移动自动化测试的通过Appium服务器上下文中有用的附加功能添加。
AndroidDriver:该驱动程序类从AppiumDriver继承,但它在那些在通过Appium Android设备的移动自动化测试的上下文中有用的附加功能添加。如果您想在Android设备或Android模拟器上开始测试,请仅使用此驱动程序类。
IOSDriver:该驱动程序类从AppiumDriver继承,但它在那些在通过Appium iOS设备的移动自动化测试的上下文中有用的附加功能添加。如果您想在iOS设备或iOS模拟器上开始测试,请仅使用此驱动程序类。
正如你所看到的,司机和他们的名字与他们的工作密切相关。在初始化驱动程序时,只能使用Android或IOS驱动程序。
此时应更换
AppiumDriver d;
有了这个
AndroidDriver <MobileElement> d;
希望这将解决您的问题。
下面的代码将为您工作,更好地测试真实设备。我所做的唯一改变是“caps.setCapability(”browserName“,”Chrome“);”
static AppiumDriver d;
@BeforeClass
public static void setUp() throws Exception
{
//Set Capabilities
DesiredCapabilities caps=new DesiredCapabilities();
caps.setCapability("deviceName", "Celkon A35K Remote");
caps.setCapability("platformName", "Android");
caps.setCapability("platformVersion", "6");
caps.setCapability("browserName", "Chrome");
d = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps);
d.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
d.manage().timeouts().pageLoadTimeout(120,TimeUnit.SECONDS);
}
@Test
public void testFBLogin() throws Exception
{
//Load web page
d.get("https://www.facebook.com/");
//Enter user name
d.findElementByName("email").sendKeys("Appium");
//Enter password
d.findElementByName("pass").sendKeys("Appium");
//Click on Login
d.findElementByName("login").click();
Thread.sleep(10000);
}
@AfterClass
public static void tearDown()
{
//Close browser
d.quit();
}
请问您能否提供更详细的日志以更好地帮助您?
根据您所提到的代码,这是我能想到的,你可以做
- 声明AndroidDriver是没有问题的。这应该照原样工作。
- 正如有些人已经提到你需要更改
caps.setCapability( “browserName”, “浏览器”);
到
caps.setCapability( “browserName”, “浏览器”);
Saucelabs在这里有很棒的文档 - https://wiki.saucelabs.com/display/DOCS/Examples+of+Test+Configuration+Options+for+Website+Tests#ExamplesofTestConfigurationOptionsforWebsiteTests-Mac/OSX/Safari。检查出来
- 最后,请尝试更改远程地址为“http://127.0.0.1:4723/wd/hub”;
我有使用 “http://0.0.0.0:4723/wd/hub”
希望这有助于问题。
-Raj
的Twitter:https://twitter.com/epsilon11
在哪一行,你得到这个错误? –