当使用 Java 代码通过 Appium 进行控制时,无法在 Outlook 邮件上使用 findElementByName
Can't use findElementByName on Outlook mail when control via Appium with Java code
我正在为我的项目导入 Appium (java-client-7.3.0.jar) 和 Selenium 库。
我的函数:
import org.junit.*;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By.ByClassName;
import org.openqa.selenium.By.ByName;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.ArrayList;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.net.URL;
import io.appium.java_client.android.nativekey.KeyEvent;
import io.appium.java_client.windows.WindowsDriver;
import io.appium.java_client.windows.WindowsElement;
import java.awt.RenderingHints.Key;
import java.awt.Robot;
import java.lang.reflect.Array;
public class WinAppEmail {
private static WindowsDriver<WindowsElement> session = null;
public void setup() {
try {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("app", "C:\Program Files\Microsoft Office\Office16\OUTLOOK.EXE");
session = new WindowsDriver<WindowsElement>(new URL("http://127.0.0.1:4723"), capabilities);
session.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
String strCurrentWindow="" ;
// strCurrentWindow = session.getWindowHandle(); // => Can't not get current handle
// Robot robot = new Robot();
// robot.keyPress(java.awt.event.KeyEvent.VK_CONTROL);
// robot.keyPress(java.awt.event.KeyEvent.VK_N);
// robot.keyRelease(java.awt.event.KeyEvent.VK_N);
// robot.keyRelease(java.awt.event.KeyEvent.VK_CONTROL);
session.findElementByName("New Email").click(); // => Can't find
}catch(Exception e){
e.printStackTrace();
} finally {
}
}
}
我的代码有 2 个问题。
1.无法获取当前window句柄(strCurrentWindow = session.getWindowHandle();)
2. Outlook邮件无法点击按钮(session.findElementByName("New Email").click();)
请帮我!谢谢大家
exception:
Feb 07, 2020 3:55:42 PM
io.appium.java_client.remote.AppiumCommandExecutor lambda[=12=] INFO:
Detected dialect: OSS
--------------- Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
at
io.appium.java_client.internal.ElementMap.getElementClass(ElementMap.java:77)
at
io.appium.java_client.internal.JsonToMobileElementConverter.newRemoteWebElement(JsonToMobileElementConverter.java:67)
at
io.appium.java_client.internal.JsonToMobileElementConverter.apply(JsonToMobileElementConverter.java:57)
at
org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:561)
at
io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at
io.appium.java_client.windows.WindowsDriver.execute(WindowsDriver.java:1)
at
org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323)
at
io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:61)
at
io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1)
at
io.appium.java_client.windows.WindowsDriver.findElement(WindowsDriver.java:1)
at
org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:404)
at
io.appium.java_client.DefaultGenericMobileDriver.findElementByName(DefaultGenericMobileDriver.java:117)
at
io.appium.java_client.AppiumDriver.findElementByName(AppiumDriver.java:1)
at
io.appium.java_client.windows.WindowsDriver.findElementByName(WindowsDriver.java:1)
at Allegro.WinAppEmail.setup(WinAppEmail.java:59) at
Allegro.MainFunction.main(MainFunction.java:9) Caused by:
java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
at java.net.URLClassLoader.findClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source) at
sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source) ... 17 more
你能打开 Outlook 吗?
如果不是,则尝试将相同的路径更改为:
C:/Program Files (x86)/Microsoft Office/root/Office16/OUTLOOK.EXE
我能够使用此路径完成这两项操作,即获取 windowHanlde 以及单击新邮件。
我正在为我的项目导入 Appium (java-client-7.3.0.jar) 和 Selenium 库。 我的函数:
import org.junit.*;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By.ByClassName;
import org.openqa.selenium.By.ByName;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.ArrayList;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.net.URL;
import io.appium.java_client.android.nativekey.KeyEvent;
import io.appium.java_client.windows.WindowsDriver;
import io.appium.java_client.windows.WindowsElement;
import java.awt.RenderingHints.Key;
import java.awt.Robot;
import java.lang.reflect.Array;
public class WinAppEmail {
private static WindowsDriver<WindowsElement> session = null;
public void setup() {
try {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("app", "C:\Program Files\Microsoft Office\Office16\OUTLOOK.EXE");
session = new WindowsDriver<WindowsElement>(new URL("http://127.0.0.1:4723"), capabilities);
session.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
String strCurrentWindow="" ;
// strCurrentWindow = session.getWindowHandle(); // => Can't not get current handle
// Robot robot = new Robot();
// robot.keyPress(java.awt.event.KeyEvent.VK_CONTROL);
// robot.keyPress(java.awt.event.KeyEvent.VK_N);
// robot.keyRelease(java.awt.event.KeyEvent.VK_N);
// robot.keyRelease(java.awt.event.KeyEvent.VK_CONTROL);
session.findElementByName("New Email").click(); // => Can't find
}catch(Exception e){
e.printStackTrace();
} finally {
}
}
}
我的代码有 2 个问题。 1.无法获取当前window句柄(strCurrentWindow = session.getWindowHandle();) 2. Outlook邮件无法点击按钮(session.findElementByName("New Email").click();) 请帮我!谢谢大家
exception: Feb 07, 2020 3:55:42 PM io.appium.java_client.remote.AppiumCommandExecutor lambda[=12=] INFO: Detected dialect: OSS --------------- Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils at io.appium.java_client.internal.ElementMap.getElementClass(ElementMap.java:77) at io.appium.java_client.internal.JsonToMobileElementConverter.newRemoteWebElement(JsonToMobileElementConverter.java:67) at io.appium.java_client.internal.JsonToMobileElementConverter.apply(JsonToMobileElementConverter.java:57) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:561) at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41) at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) at io.appium.java_client.windows.WindowsDriver.execute(WindowsDriver.java:1) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323) at io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:61) at io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1) at io.appium.java_client.windows.WindowsDriver.findElement(WindowsDriver.java:1) at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:404) at io.appium.java_client.DefaultGenericMobileDriver.findElementByName(DefaultGenericMobileDriver.java:117) at io.appium.java_client.AppiumDriver.findElementByName(AppiumDriver.java:1) at io.appium.java_client.windows.WindowsDriver.findElementByName(WindowsDriver.java:1) at Allegro.WinAppEmail.setup(WinAppEmail.java:59) at Allegro.MainFunction.main(MainFunction.java:9) Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 17 more
你能打开 Outlook 吗? 如果不是,则尝试将相同的路径更改为:
C:/Program Files (x86)/Microsoft Office/root/Office16/OUTLOOK.EXE
我能够使用此路径完成这两项操作,即获取 windowHanlde 以及单击新邮件。