Skip to content

Commit 0c120ed

Browse files
committed
Making findElement(s) commands standard compliant (except for link text locators)
1 parent a2404b8 commit 0c120ed

File tree

3 files changed

+92
-16
lines changed

3 files changed

+92
-16
lines changed

java/client/src/org/openqa/selenium/firefox/MarionetteDriver.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@
2222
import org.openqa.selenium.Beta;
2323
import org.openqa.selenium.Capabilities;
2424
import org.openqa.selenium.WebDriverException;
25+
import org.openqa.selenium.WebElement;
2526
import org.openqa.selenium.remote.DesiredCapabilities;
2627
import org.openqa.selenium.remote.FileDetector;
2728
import org.openqa.selenium.remote.RemoteWebDriver;
2829
import org.openqa.selenium.remote.service.DriverCommandExecutor;
2930

31+
import java.util.List;
32+
3033
/**
3134
* An implementation of the {#link WebDriver} interface that drives Firefox using Marionette interface.
3235
*/
@@ -70,6 +73,11 @@ public MarionetteDriver(GeckoDriverService service, Capabilities capabilities,
7073
run(service, capabilities);
7174
}
7275

76+
@Override
77+
public int getW3CStandardComplianceLevel() {
78+
return 1;
79+
}
80+
7381
private void run(GeckoDriverService service, Capabilities capabilities) {
7482
setCommandExecutor(new DriverCommandExecutor(service));
7583

java/client/src/org/openqa/selenium/remote/RemoteWebDriver.java

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,10 @@ public RemoteWebDriver(URL remoteAddress, Capabilities desiredCapabilities) {
155155
this(new HttpCommandExecutor(remoteAddress), desiredCapabilities, null);
156156
}
157157

158+
public int getW3CStandardComplianceLevel() {
159+
return 0;
160+
}
161+
158162
private void init(Capabilities desiredCapabilities, Capabilities requiredCapabilities) {
159163
logger.addHandler(LoggingHandler.getInstance());
160164

@@ -386,11 +390,19 @@ protected List<WebElement> findElements(String by, String using) {
386390
}
387391

388392
public WebElement findElementById(String using) {
389-
return findElement("id", using);
393+
if (getW3CStandardComplianceLevel() == 0) {
394+
return findElement("id", using);
395+
} else {
396+
return findElementByCssSelector("#" + using);
397+
}
390398
}
391399

392400
public List<WebElement> findElementsById(String using) {
393-
return findElements("id", using);
401+
if (getW3CStandardComplianceLevel() == 0) {
402+
return findElements("id", using);
403+
} else {
404+
return findElementsByCssSelector("#" + using);
405+
}
394406
}
395407

396408
public WebElement findElementByLinkText(String using) {
@@ -410,27 +422,51 @@ public List<WebElement> findElementsByPartialLinkText(String using) {
410422
}
411423

412424
public WebElement findElementByTagName(String using) {
413-
return findElement("tag name", using);
425+
if (getW3CStandardComplianceLevel() == 0) {
426+
return findElement("tag name", using);
427+
} else {
428+
return findElementByCssSelector(using);
429+
}
414430
}
415431

416432
public List<WebElement> findElementsByTagName(String using) {
417-
return findElements("tag name", using);
433+
if (getW3CStandardComplianceLevel() == 0) {
434+
return findElements("tag name", using);
435+
} else {
436+
return findElementsByCssSelector(using);
437+
}
418438
}
419439

420440
public WebElement findElementByName(String using) {
421-
return findElement("name", using);
441+
if (getW3CStandardComplianceLevel() == 0) {
442+
return findElement("name", using);
443+
} else {
444+
return findElementByCssSelector("*[name=" + using + "]");
445+
}
422446
}
423447

424448
public List<WebElement> findElementsByName(String using) {
425-
return findElements("name", using);
449+
if (getW3CStandardComplianceLevel() == 0) {
450+
return findElements("name", using);
451+
} else {
452+
return findElementsByCssSelector("*[name=" + using + "]");
453+
}
426454
}
427455

428456
public WebElement findElementByClassName(String using) {
429-
return findElement("class name", using);
457+
if (getW3CStandardComplianceLevel() == 0) {
458+
return findElement("class name", using);
459+
} else {
460+
return findElementByCssSelector("." + using);
461+
}
430462
}
431463

432464
public List<WebElement> findElementsByClassName(String using) {
433-
return findElements("class name", using);
465+
if (getW3CStandardComplianceLevel() == 0) {
466+
return findElements("class name", using);
467+
} else {
468+
return findElementsByCssSelector("." + using);
469+
}
434470
}
435471

436472
public WebElement findElementByCssSelector(String using) {

java/client/src/org/openqa/selenium/remote/RemoteWebElement.java

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -206,11 +206,19 @@ protected List<WebElement> findElements(String using, String value) {
206206
}
207207

208208
public WebElement findElementById(String using) {
209-
return findElement("id", using);
209+
if (parent.getW3CStandardComplianceLevel() == 0) {
210+
return findElement("id", using);
211+
} else {
212+
return findElementByCssSelector("#" + using);
213+
}
210214
}
211215

212216
public List<WebElement> findElementsById(String using) {
213-
return findElements("id", using);
217+
if (parent.getW3CStandardComplianceLevel() == 0) {
218+
return findElements("id", using);
219+
} else {
220+
return findElementsByCssSelector("#" + using);
221+
}
214222
}
215223

216224
public WebElement findElementByLinkText(String using) {
@@ -222,19 +230,35 @@ public List<WebElement> findElementsByLinkText(String using) {
222230
}
223231

224232
public WebElement findElementByName(String using) {
225-
return findElement("name", using);
233+
if (parent.getW3CStandardComplianceLevel() == 0) {
234+
return findElement("name", using);
235+
} else {
236+
return findElementByCssSelector("*[name=" + using + "]");
237+
}
226238
}
227239

228240
public List<WebElement> findElementsByName(String using) {
229-
return findElements("name", using);
241+
if (parent.getW3CStandardComplianceLevel() == 0) {
242+
return findElements("name", using);
243+
} else {
244+
return findElementsByCssSelector("*[name=" + using + "]");
245+
}
230246
}
231247

232248
public WebElement findElementByClassName(String using) {
233-
return findElement("class name", using);
249+
if (parent.getW3CStandardComplianceLevel() == 0) {
250+
return findElement("class name", using);
251+
} else {
252+
return findElementByCssSelector("." + using);
253+
}
234254
}
235255

236256
public List<WebElement> findElementsByClassName(String using) {
237-
return findElements("class name", using);
257+
if (parent.getW3CStandardComplianceLevel() == 0) {
258+
return findElements("class name", using);
259+
} else {
260+
return findElementsByCssSelector("." + using);
261+
}
238262
}
239263

240264
public WebElement findElementByCssSelector(String using) {
@@ -262,11 +286,19 @@ public List<WebElement> findElementsByPartialLinkText(String using) {
262286
}
263287

264288
public WebElement findElementByTagName(String using) {
265-
return findElement("tag name", using);
289+
if (parent.getW3CStandardComplianceLevel() == 0) {
290+
return findElement("tag name", using);
291+
} else {
292+
return findElementByCssSelector(using);
293+
}
266294
}
267295

268296
public List<WebElement> findElementsByTagName(String using) {
269-
return findElements("tag name", using);
297+
if (parent.getW3CStandardComplianceLevel() == 0) {
298+
return findElements("tag name", using);
299+
} else {
300+
return findElementsByCssSelector(using);
301+
}
270302
}
271303

272304
protected Response execute(String command, Map<String, ?> parameters) {

0 commit comments

Comments
 (0)