我正在编写一个简单的测试来导航到移动浏览器上的网站,主要是为了了解Appium。我正在使用Android模拟器。我的代码如下所示:
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileBrowserType;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;
public class DLMobileTest
{
private WebDriver driver;
@Test
public void loadingSinglePageTest() throws Exception{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "5.0.1");
capabilities.setCapability("deviceName", "Nexus 7");
capabilities.setCapability("browserName", MobileBrowserType.BROWSER);
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.get("http://en.wikipedia.org");
driver.quit();
}
}
当我运行测试时,模拟器的浏览器会短暂启动,但在它导航到我想要的维基百科网站之前,我明白了:
org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Did not get session redirect from Chromedriver) (WARNING: The server did not provide any stacktrace information)
我不确定我的错误是什么。任何帮助表示赞赏。
答案 0 :(得分:1)
在所需的功能中添加应用程序 capabilities.setCapability(“app”,“Chrome”);
答案 1 :(得分:0)
我现在明白你会得到一个解决你问题的方法。但这是为了像我这样的人寻找上述同一问题的答案。我累了用
capabilities.setCapability("browserName", "Chrome");
而不是
capabilities.setCapability("browserName", MobileBrowserType.BROWSER);
并且有效。
答案 2 :(得分:0)
即使我遇到同样的问题。在appium安装目录中,chromedriver.exe文件将存在。将该文件替换为最新版本。这解决了我的问题。如果您需要更详细的答案,请告诉我。
答案 3 :(得分:-1)
以下是从apk安装chrome的示例代码,您可以尝试不同的选项来测试作为要求,自动安装apk,确保代码和apk在同一路径中。
import os
import unittest
from appium import webdriver
# Returns absoute path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(__file__), p)
)
class SimpleAndroidTests(unittest.TestCase):
def setUp(self):
desired_caps = {}
#Specify platform below(Android, iOS)
desired_caps['platformName'] = 'Android'
#Specify OS version(Settings->About phone -> android version)
desired_caps['platformVersion'] = '5.0.1'
#Obtain the Device name from Adb[For Android](Terminal Command: "adb devices")
desired_caps['deviceName'] = 'TA93400A78'
#Specify the path to Application
desired_caps['app'] = PATH('Chrome-com.android.chrome-2171093-v39.0.2171.93.apk')
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def tearDown(self):
# end the session
self.driver.quit()
def test_open_chrome(self):
self.driver.implicitly_wait(20)
self.driver.find_element_by_id("com.android.chrome:id/terms_accept").click()
self.driver.implicitly_wait(5)
for i in range(0,3):
self.driver.find_element_by_id("com.android.chrome:id/positive_button").click()
self.driver.implicitly_wait(5)
self.driver.find_element_by_id("com.android.chrome:id/menu_button").click()
self.driver.implicitly_wait(5)
self.driver.find_element_by_name("New incognito tab").click()
self.driver.implicitly_wait(5)
self.driver.back()
self.driver.implicitly_wait(5)
self.driver.find_element_by_name("Bookmarks").click()
self.driver.implicitly_wait(5)
self.driver.back()
self.driver.implicitly_wait(5)
self.driver.find_element_by_name("Recent tabs").click()
self.driver.implicitly_wait(5)
self.driver.back()
self.driver.implicitly_wait(5)
self.driver.find_element_by_name("History").click()
self.driver.implicitly_wait(5)
self.driver.back()
self.driver.implicitly_wait(5)
self.driver.find_element_by_name("Bookmarks").click()
self.driver.implicitly_wait(5)
self.driver.back()
self.driver.implicitly_wait(5)
self.driver.find_element_by_name("Settings").click()
self.driver.implicitly_wait(5)
self.driver.find_elements_by_name("com.android.chrome:id/header_title").click()
self.driver.implicitly_wait(5)
self.driver.back()
self.driver.implicitly_wait(5)
self.driver.find_element_by_name("Help & feedback").click()
self.driver.implicitly_wait(5)
self.driver.back()
self.driver.implicitly_wait(5)
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(SimpleAndroidTests)
unittest.TextTestRunner(verbosity=2).run(suite)