Skip to content

Commit 11cf4f1

Browse files
committed
move python code to test_locators.py
1 parent ff1ddd7 commit 11cf4f1

File tree

7 files changed

+198
-128
lines changed

7 files changed

+198
-128
lines changed

examples/python/tests/conftest.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
from urllib.request import urlopen
1010
import requests
1111
from requests.auth import HTTPBasicAuth
12+
from http.server import HTTPServer, SimpleHTTPRequestHandler
13+
from threading import Thread
1214

1315
import pytest
1416
from selenium import webdriver
@@ -188,6 +190,24 @@ def wait_for_server(url, timeout):
188190
print("Selenium server has been terminated")
189191

190192

193+
@pytest.fixture(scope="session")
194+
def html_server():
195+
"""
196+
Start an HTTP server to serve files from the `tests/` directory.
197+
"""
198+
elements_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)))
199+
os.chdir(elements_dir)
200+
port = free_port()
201+
server = HTTPServer(("localhost", port), SimpleHTTPRequestHandler)
202+
203+
thread = Thread(target=server.serve_forever, daemon=True)
204+
thread.start()
205+
206+
yield f"http://localhost:{port}"
207+
208+
server.shutdown()
209+
210+
191211
@pytest.fixture(scope="function")
192212
def server():
193213
_host = "localhost"
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<html>
2+
<body>
3+
<style>
4+
.information {
5+
background-color: white;
6+
color: black;
7+
padding: 10px;
8+
}
9+
</style>
10+
<h2>Contact Selenium</h2>
11+
12+
<form action="/action_page.php">
13+
<input type="radio" name="gender" value="m" />Male &nbsp;
14+
<input type="radio" name="gender" value="f" />Female <br>
15+
<br>
16+
<label for="fname">First name:</label><br>
17+
<input class="information" type="text" id="fname" name="fname" value="Jane"><br><br>
18+
<label for="lname">Last name:</label><br>
19+
<input class="information" type="text" id="lname" name="lname" value="Doe"><br><br>
20+
<label for="newsletter">Newsletter:</label>
21+
<input type="checkbox" name="newsletter" value="1" /><br><br>
22+
<input type="submit" value="Submit">
23+
</form>
24+
25+
<p>To know more about Selenium, visit the official page
26+
<a href ="https://www.selenium.dev/">Selenium Official Page</a>
27+
</p>
28+
29+
</body>
30+
</html>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,54 @@
1+
import pytest
12
from selenium import webdriver
3+
from selenium.webdriver.common.by import By
24

5+
@pytest.fixture
6+
def driver(html_server):
7+
"""
8+
Initialize the WebDriver and navigate to the elements/locators.html page.
9+
"""
10+
driver = webdriver.Chrome()
11+
driver.implicitly_wait(0.5)
12+
driver.get(f"{html_server}/elements/locators.html")
13+
yield driver
14+
driver.quit()
15+
16+
def test_class_name(driver):
17+
element = driver.find_element(By.CLASS_NAME, "information")
18+
assert element is not None
19+
assert element.tag_name == "input"
20+
21+
def test_css_selector(driver):
22+
element = driver.find_element(By.CSS_SELECTOR, "#fname")
23+
assert element is not None
24+
assert element.get_attribute("value") == "Jane"
25+
26+
def test_id(driver):
27+
element = driver.find_element(By.ID, "lname")
28+
assert element is not None
29+
assert element.get_attribute("value") == "Doe"
30+
31+
def test_name(driver):
32+
element = driver.find_element(By.NAME, "newsletter")
33+
assert element is not None
34+
assert element.tag_name == "input"
35+
36+
def test_link_text(driver):
37+
element = driver.find_element(By.LINK_TEXT, "Selenium Official Page")
38+
assert element is not None
39+
assert element.get_attribute("href") == "https://www.selenium.dev/"
40+
41+
def test_partial_link_text(driver):
42+
element = driver.find_element(By.PARTIAL_LINK_TEXT, "Official Page")
43+
assert element is not None
44+
assert element.get_attribute("href") == "https://www.selenium.dev/"
45+
46+
def test_tag_name(driver):
47+
element = driver.find_element(By.TAG_NAME, "a")
48+
assert element is not None
49+
assert element.get_attribute("href") == "https://www.selenium.dev/"
50+
51+
def test_xpath(driver):
52+
element = driver.find_element(By.XPATH, "//input[@value='f']")
53+
assert element is not None
54+
assert element.get_attribute("type") == "radio"

website_and_docs/content/documentation/webdriver/elements/locators.en.md

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,9 @@ available in Selenium.
8080
WebDriver driver = new ChromeDriver();
8181
driver.findElement(By.className("information"));
8282
{{< /tab >}}
83-
{{< tab header="Python" >}}
84-
driver = webdriver.Chrome()
85-
driver.find_element(By.CLASS_NAME, "information")
86-
{{< /tab >}}
83+
{{< tab header="Python" text=true >}}
84+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L17" >}}
85+
{{< /tab >}}
8786
{{< tab header="CSharp" >}}
8887
var driver = new ChromeDriver();
8988
driver.FindElement(By.ClassName("information"));
@@ -114,10 +113,9 @@ textbox, using css.
114113
WebDriver driver = new ChromeDriver();
115114
driver.findElement(By.cssSelector("#fname"));
116115
{{< /tab >}}
117-
{{< tab header="Python" >}}
118-
driver = webdriver.Chrome()
119-
driver.find_element(By.CSS_SELECTOR, "#fname")
120-
{{< /tab >}}
116+
{{< tab header="Python" text=true >}}
117+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L22" >}}
118+
{{< /tab >}}
121119
{{< tab header="CSharp" >}}
122120
var driver = new ChromeDriver();
123121
driver.FindElement(By.CssSelector("#fname"));
@@ -146,10 +144,9 @@ We will identify the Last Name field using it.
146144
WebDriver driver = new ChromeDriver();
147145
driver.findElement(By.id("lname"));
148146
{{< /tab >}}
149-
{{< tab header="Python" >}}
150-
driver = webdriver.Chrome()
151-
driver.find_element(By.ID, "lname")
152-
{{< /tab >}}
147+
{{< tab header="Python" text=true >}}
148+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L27" >}}
149+
{{< /tab >}}
153150
{{< tab header="CSharp" >}}
154151
var driver = new ChromeDriver();
155152
driver.FindElement(By.Id("lname"));
@@ -179,10 +176,9 @@ We will identify the Newsletter checkbox using it.
179176
WebDriver driver = new ChromeDriver();
180177
driver.findElement(By.name("newsletter"));
181178
{{< /tab >}}
182-
{{< tab header="Python" >}}
183-
driver = webdriver.Chrome()
184-
driver.find_element(By.NAME, "newsletter")
185-
{{< /tab >}}
179+
{{< tab header="Python" text=true >}}
180+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L32" >}}
181+
{{< /tab >}}
186182
{{< tab header="CSharp" >}}
187183
var driver = new ChromeDriver();
188184
driver.FindElement(By.Name("newsletter"));
@@ -210,10 +206,9 @@ In the HTML snippet shared, we have a link available, let's see how will we loca
210206
WebDriver driver = new ChromeDriver();
211207
driver.findElement(By.linkText("Selenium Official Page"));
212208
{{< /tab >}}
213-
{{< tab header="Python" >}}
214-
driver = webdriver.Chrome()
215-
driver.find_element(By.LINK_TEXT, "Selenium Official Page")
216-
{{< /tab >}}
209+
{{< tab header="Python" text=true >}}
210+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L37" >}}
211+
{{< /tab >}}
217212
{{< tab header="CSharp" >}}
218213
var driver = new ChromeDriver();
219214
driver.FindElement(By.LinkText("Selenium Official Page"));
@@ -242,10 +237,9 @@ In the HTML snippet shared, we have a link available, lets see how will we locat
242237
WebDriver driver = new ChromeDriver();
243238
driver.findElement(By.partialLinkText("Official Page"));
244239
{{< /tab >}}
245-
{{< tab header="Python" >}}
246-
driver = webdriver.Chrome()
247-
driver.find_element(By.PARTIAL_LINK_TEXT, "Official Page")
248-
{{< /tab >}}
240+
{{< tab header="Python" text=true >}}
241+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L42" >}}
242+
{{< /tab >}}
249243
{{< tab header="CSharp" >}}
250244
var driver = new ChromeDriver();
251245
driver.FindElement(By.PartialLinkText("Official Page"));
@@ -272,10 +266,9 @@ From the above HTML snippet shared, lets identify the link, using its html tag "
272266
WebDriver driver = new ChromeDriver();
273267
driver.findElement(By.tagName("a"));
274268
{{< /tab >}}
275-
{{< tab header="Python" >}}
276-
driver = webdriver.Chrome()
277-
driver.find_element(By.TAG_NAME, "a")
278-
{{< /tab >}}
269+
{{< tab header="Python" text=true >}}
270+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L47" >}}
271+
{{< /tab >}}
279272
{{< tab header="CSharp" >}}
280273
var driver = new ChromeDriver();
281274
driver.FindElement(By.TagName("a"));
@@ -308,10 +301,9 @@ first name text box. Let us create locator for female radio button using xpath.
308301
WebDriver driver = new ChromeDriver();
309302
driver.findElement(By.xpath("//input[@value='f']"));
310303
{{< /tab >}}
311-
{{< tab header="Python" >}}
312-
driver = webdriver.Chrome()
313-
driver.find_element(By.XPATH, "//input[@value='f']")
314-
{{< /tab >}}
304+
{{< tab header="Python" text=true >}}
305+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L52" >}}
306+
{{< /tab >}}
315307
{{< tab header="CSharp" >}}
316308
var driver = new ChromeDriver();
317309
driver.FindElement(By.Xpath("//input[@value='f']"));

website_and_docs/content/documentation/webdriver/elements/locators.ja.md

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,9 @@ available in Selenium.
7878
WebDriver driver = new ChromeDriver();
7979
driver.findElement(By.className("information"));
8080
{{< /tab >}}
81-
{{< tab header="Python" >}}
82-
driver = webdriver.Chrome()
83-
driver.find_element(By.CLASS_NAME, "information")
84-
{{< /tab >}}
81+
{{< tab header="Python" text=true >}}
82+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L17" >}}
83+
{{< /tab >}}
8584
{{< tab header="CSharp" >}}
8685
var driver = new ChromeDriver();
8786
driver.FindElement(By.ClassName("information"));
@@ -111,10 +110,9 @@ textbox, using css.
111110
WebDriver driver = new ChromeDriver();
112111
driver.findElement(By.cssSelector("#fname"));
113112
{{< /tab >}}
114-
{{< tab header="Python" >}}
115-
driver = webdriver.Chrome()
116-
driver.find_element(By.CSS_SELECTOR, "#fname")
117-
{{< /tab >}}
113+
{{< tab header="Python" text=true >}}
114+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L22" >}}
115+
{{< /tab >}}
118116
{{< tab header="CSharp" >}}
119117
var driver = new ChromeDriver();
120118
driver.FindElement(By.CssSelector("#fname"));
@@ -142,10 +140,9 @@ We will identify the Last Name field using it.
142140
WebDriver driver = new ChromeDriver();
143141
driver.findElement(By.id("lname"));
144142
{{< /tab >}}
145-
{{< tab header="Python" >}}
146-
driver = webdriver.Chrome()
147-
driver.find_element(By.ID, "lname")
148-
{{< /tab >}}
143+
{{< tab header="Python" text=true >}}
144+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L27" >}}
145+
{{< /tab >}}
149146
{{< tab header="CSharp" >}}
150147
var driver = new ChromeDriver();
151148
driver.FindElement(By.Id("lname"));
@@ -174,10 +171,9 @@ We will identify the Newsletter checkbox using it.
174171
WebDriver driver = new ChromeDriver();
175172
driver.findElement(By.name("newsletter"));
176173
{{< /tab >}}
177-
{{< tab header="Python" >}}
178-
driver = webdriver.Chrome()
179-
driver.find_element(By.NAME, "newsletter")
180-
{{< /tab >}}
174+
{{< tab header="Python" text=true >}}
175+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L32" >}}
176+
{{< /tab >}}
181177
{{< tab header="CSharp" >}}
182178
var driver = new ChromeDriver();
183179
driver.FindElement(By.Name("newsletter"));
@@ -204,10 +200,9 @@ In the HTML snippet shared, we have a link available, lets see how will we locat
204200
WebDriver driver = new ChromeDriver();
205201
driver.findElement(By.linkText("Selenium Official Page"));
206202
{{< /tab >}}
207-
{{< tab header="Python" >}}
208-
driver = webdriver.Chrome()
209-
driver.find_element(By.LINK_TEXT, "Selenium Official Page")
210-
{{< /tab >}}
203+
{{< tab header="Python" text=true >}}
204+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L37" >}}
205+
{{< /tab >}}
211206
{{< tab header="CSharp" >}}
212207
var driver = new ChromeDriver();
213208
driver.FindElement(By.LinkText("Selenium Official Page"));
@@ -235,10 +230,9 @@ In the HTML snippet shared, we have a link available, lets see how will we locat
235230
WebDriver driver = new ChromeDriver();
236231
driver.findElement(By.partialLinkText("Official Page"));
237232
{{< /tab >}}
238-
{{< tab header="Python" >}}
239-
driver = webdriver.Chrome()
240-
driver.find_element(By.PARTIAL_LINK_TEXT, "Official Page")
241-
{{< /tab >}}
233+
{{< tab header="Python" text=true >}}
234+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L42" >}}
235+
{{< /tab >}}
242236
{{< tab header="CSharp" >}}
243237
var driver = new ChromeDriver();
244238
driver.FindElement(By.PartialLinkText("Official Page"));
@@ -264,10 +258,9 @@ From the above HTML snippet shared, lets identify the link, using its html tag "
264258
WebDriver driver = new ChromeDriver();
265259
driver.findElement(By.tagName("a"));
266260
{{< /tab >}}
267-
{{< tab header="Python" >}}
268-
driver = webdriver.Chrome()
269-
driver.find_element(By.TAG_NAME, "a")
270-
{{< /tab >}}
261+
{{< tab header="Python" text=true >}}
262+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L47" >}}
263+
{{< /tab >}}
271264
{{< tab header="CSharp" >}}
272265
var driver = new ChromeDriver();
273266
driver.FindElement(By.TagName("a"));
@@ -299,10 +292,9 @@ first name text box. Let us create locator for female radio button using xpath.
299292
WebDriver driver = new ChromeDriver();
300293
driver.findElement(By.xpath("//input[@value='f']"));
301294
{{< /tab >}}
302-
{{< tab header="Python" >}}
303-
driver = webdriver.Chrome()
304-
driver.find_element(By.XPATH, "//input[@value='f']")
305-
{{< /tab >}}
295+
{{< tab header="Python" text=true >}}
296+
{{< gh-codeblock path="/examples/python/tests/elements/test_locators.py#L52" >}}
297+
{{< /tab >}}
306298
{{< tab header="CSharp" >}}
307299
var driver = new ChromeDriver();
308300
driver.FindElement(By.Xpath("//input[@value='f']"));

0 commit comments

Comments
 (0)