You’re right, you cannot use more than one port but you have two execution agents.
I use AS to send tests to two iPad, the only thing of the test I change to send to one or another iPad is the UDID of the device and the device name. Same way if you use two Android devices or one Android and one iOS.
This is a test copied directly from AS, if you compile this changing only the device name and UDID you can run it in parallel using two iOS devices. (Of course it will fail unless you change the item to find and click)
The agent port doesn’t change but the Community license allows up to two simultaneous executions. If you need more executions then you must purchase them apart.
namespace Experitest
{
[TestFixture]
public class Untitled
{
private string reportDirectory = "reports";
private string reportFormat = "xml";
private string testName = "Untitled";
protected IOSDriver<IOSElement> driver = null;
DesiredCapabilities dc = new DesiredCapabilities();
[SetUp()]
public void SetupTest()
{
dc.SetCapability("reportDirectory", reportDirectory);
dc.SetCapability("reportFormat", reportFormat);
dc.SetCapability("testName", testName);
dc.SetCapability(MobileCapabilityType.Udid, "change_this_UDID_for_every_device"); // <-- Device UDID
driver = new IOSDriver<IOSElement>(new Uri("http://localhost:4723/wd/hub"), dc);
}
[Test()]
public void TestUntitled()
{
driver.ExecuteScript("seetest:client.setDevice(\"ios_app:IPADAIR\")"); // <-- Device Name
driver.FindElement(By.XPath("//*[@xpath='test']")).Click(); // <-- Item to check and click.
}
[TearDown()]
public void TearDown()
{
driver.Quit();
}
}