Skip to content

Commit 80c1425

Browse files
update to selenium 3.13.0 (appium#961)
* update to selenium 3.13.0 * address review comments * fix build and address review comments
1 parent 1991a8a commit 80c1425

File tree

13 files changed

+96
-21
lines changed

13 files changed

+96
-21
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ matrix:
1313
- brew outdated xctool || brew upgrade xctool
1414
- npm install -g appium
1515
script:
16-
- ./gradlew clean xcuiTest -x signArchives
16+
- ./gradlew clean build xcuiTest -x test -x signArchives
1717
# - language: android
1818
# install: true
1919
# os: linux

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ compileJava {
5050
]
5151
}
5252

53-
ext.seleniumVersion = '3.12.0'
53+
ext.seleniumVersion = '3.13.0'
5454

5555
dependencies {
5656
compile ("org.seleniumhq.selenium:selenium-java:${seleniumVersion}") {

src/main/java/io/appium/java_client/events/DefaultListener.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,16 @@ public <X> void afterGetScreenshotAs(OutputType<X> target, X screenshot) {
144144
((WebDriverEventListener) dispatcher).afterGetScreenshotAs(target, screenshot);
145145
}
146146

147+
@Override
148+
public void beforeGetText(WebElement element, WebDriver driver) {
149+
((ElementEventListener) dispatcher).beforeGetText(element, driver);
150+
}
151+
152+
@Override
153+
public void afterGetText(WebElement element, WebDriver driver, String text) {
154+
((ElementEventListener) dispatcher).afterGetText(element, driver, text);
155+
}
156+
147157
public void add(Collection<Listener> listeners) {
148158
this.listeners.addAll(listeners);
149159
}
@@ -245,4 +255,4 @@ public void afterSwitchToWindow(String windowName, WebDriver driver) {
245255
@Override public void afterRotation(WebDriver driver, ScreenOrientation orientation) {
246256
((RotationEventListener) dispatcher).afterRotation(driver, orientation);
247257
}
248-
}
258+
}

src/main/java/io/appium/java_client/events/api/general/ElementEventListener.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,21 @@ public interface ElementEventListener extends Listener {
7777
* @param keysToSend character sequence to send to the element
7878
*/
7979
void afterChangeValueOf(WebElement element, WebDriver driver, CharSequence[] keysToSend);
80+
81+
/**
82+
* Called before {@link WebElement#getText()} method is being called.
83+
*
84+
* @param element - {@link WebElement} against which call is being made
85+
* @param driver - instance of {@link WebDriver}
86+
*/
87+
void beforeGetText(WebElement element, WebDriver driver);
88+
89+
/**
90+
* Called right after {@link WebElement#getText()} method is being called.
91+
*
92+
* @param element - {@link WebElement} against which call is being made
93+
* @param driver - instance of {@link WebDriver}
94+
* @param text - {@link String} object extracted from respective {@link WebElement}
95+
*/
96+
void afterGetText(WebElement element, WebDriver driver, String text);
8097
}

src/main/java/io/appium/java_client/remote/NewAppiumSessionPayload.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.openqa.selenium.json.Json;
4444
import org.openqa.selenium.json.JsonInput;
4545
import org.openqa.selenium.json.JsonOutput;
46+
import org.openqa.selenium.remote.AcceptedW3CCapabilityKeys;
4647
import org.openqa.selenium.remote.Dialect;
4748
import org.openqa.selenium.remote.session.CapabilitiesFilter;
4849
import org.openqa.selenium.remote.session.CapabilityTransform;
@@ -95,20 +96,7 @@ public class NewAppiumSessionPayload implements Closeable {
9596
private static final String FIRST_MATCH = "firstMatch";
9697
private static final String ALWAYS_MATCH = "alwaysMatch";
9798

98-
private static final Predicate<String> ACCEPTED_W3C_PATTERNS = Stream.of(
99-
"^[\\w-]+:.*$",
100-
"^acceptInsecureCerts$",
101-
"^browserName$",
102-
"^browserVersion$",
103-
"^platformName$",
104-
"^pageLoadStrategy$",
105-
"^proxy$",
106-
"^setWindowRect$",
107-
"^timeouts$",
108-
"^unhandledPromptBehavior$")
109-
.map(Pattern::compile)
110-
.map(Pattern::asPredicate)
111-
.reduce(identity -> false, Predicate::or);
99+
private static final Predicate<String> ACCEPTED_W3C_PATTERNS = new AcceptedW3CCapabilityKeys();
112100

113101
private final Set<CapabilitiesFilter> adapters;
114102
private final Set<CapabilityTransform> transforms;

src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import static com.google.common.base.Preconditions.checkArgument;
2020
import static com.google.common.base.Preconditions.checkNotNull;
21+
import static org.openqa.selenium.remote.CapabilityType.PLATFORM_NAME;
2122

2223
import com.google.common.collect.ImmutableList;
2324
import com.google.common.collect.ImmutableMap;
@@ -29,8 +30,10 @@
2930
import org.apache.commons.io.FileUtils;
3031
import org.apache.commons.lang3.StringUtils;
3132
import org.apache.commons.validator.routines.InetAddressValidator;
33+
import org.openqa.selenium.Capabilities;
3234
import org.openqa.selenium.Platform;
3335
import org.openqa.selenium.os.CommandLine;
36+
import org.openqa.selenium.remote.BrowserType;
3437
import org.openqa.selenium.remote.DesiredCapabilities;
3538
import org.openqa.selenium.remote.service.DriverService;
3639

@@ -96,6 +99,31 @@ public AppiumServiceBuilder() {
9699
withEnvironment(System.getenv());
97100
}
98101

102+
/**
103+
* Provides a measure of how strongly this {@link DriverService} supports the given
104+
* {@code capabilities}. A score of 0 or less indicates that this {@link DriverService} does not
105+
* support instances of {@link org.openqa.selenium.WebDriver} that require {@code capabilities}.
106+
* Typically, the score is generated by summing the number of capabilities that the driver
107+
* service directly supports that are unique to the driver service (that is, things like
108+
* "{@code proxy}" don't tend to count to the score).
109+
* Higher the score, higher the possibility of getting grid sessions created sooner.
110+
*/
111+
@Override public int score(Capabilities capabilites) {
112+
int score = 0;
113+
114+
if (capabilites.getCapability(PLATFORM_NAME) != null) {
115+
score++;
116+
}
117+
118+
String browserName = capabilites.getBrowserName();
119+
if (browserName.equals(BrowserType.CHROME) || browserName.equals(BrowserType.ANDROID)
120+
|| browserName.equals(BrowserType.SAFARI)) {
121+
score++;
122+
}
123+
124+
return score;
125+
}
126+
99127
private static void validateNodeStructure(File node) {
100128
String absoluteNodePath = node.getAbsolutePath();
101129

src/test/java/io/appium/java_client/events/listeners/AppiumListener.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,14 @@ public <X> void afterGetScreenshotAs(OutputType<X> target, X screenshot) {
127127
+ "Target type is %s, result is %s", target, screenshot));
128128
}
129129

130+
@Override public void beforeGetText(WebElement element, WebDriver driver) {
131+
messages.add("WebDriverEventListener: Attempt to get text of the element");
132+
}
133+
134+
@Override public void afterGetText(WebElement element, WebDriver driver, String text) {
135+
messages.add("WebDriverEventListener: Got the text of an element");
136+
}
137+
130138
@Override
131139
public void beforeSwitchToWindow(String windowName, WebDriver driver) {
132140
messages.add(format("WebDriverEventListener: Attempt to switch to window %s", windowName));

src/test/java/io/appium/java_client/events/listeners/ElementListener.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ public class ElementListener extends TestListener implements ElementEventListene
3232
messages.add("The value of the element was changed");
3333
}
3434

35+
@Override public void beforeGetText(WebElement element, WebDriver driver) {
36+
messages.add("Attempt to get text of the element");
37+
}
38+
39+
@Override public void afterGetText(WebElement element, WebDriver driver, String text) {
40+
messages.add("Got the text of an element");
41+
}
42+
3543
@Override protected void add() {
3644
SingleListeners.listeners.put(ElementListener.class, this);
3745
}

src/test/java/io/appium/java_client/events/listeners/ElementListener2.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ public class ElementListener2 extends TestListener implements ElementEventListen
3232
messages.add("Externally defined listener: The value of the element was changed");
3333
}
3434

35+
@Override public void beforeGetText(WebElement element, WebDriver driver) {
36+
messages.add("WebDriverEventListener: Attempt to get text of the element");
37+
}
38+
39+
@Override public void afterGetText(WebElement element, WebDriver driver, String text) {
40+
messages.add("WebDriverEventListener: Got the text of an element");
41+
}
42+
3543
@Override protected void add() {
3644
SingleListeners.listeners.put(ElementListener2.class, this);
3745
}

src/test/java/io/appium/java_client/ios/AppIOSTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ public class AppIOSTest extends BaseIOSTest {
1818

1919
@BeforeClass
2020
public static void beforeClass() throws UnknownHostException, MalformedURLException {
21+
final String ip = startAppiumServer();
22+
2123
if (service == null || !service.isRunning()) {
2224
throw new AppiumServerHasNotBeenStartedLocallyException("An appium server node is not started!");
2325
}
@@ -32,6 +34,6 @@ public static void beforeClass() throws UnknownHostException, MalformedURLExcept
3234
//sometimes environment has performance problems
3335
capabilities.setCapability(IOSMobileCapabilityType.LAUNCH_TIMEOUT, 500000);
3436
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
35-
driver = new IOSDriver<>(new URL("http://" + startAppiumServer() + ":" + PORT + "/wd/hub"), capabilities);
37+
driver = new IOSDriver<>(new URL("http://" + ip + ":" + PORT + "/wd/hub"), capabilities);
3638
}
3739
}

0 commit comments

Comments
 (0)