Skip to content

Commit 77844a6

Browse files
authored
Merge pull request #1714 from seleniumbase/choose-binary-location-and-more
Choose binary location and more
2 parents bcdd9da + f450b4f commit 77844a6

40 files changed

+934
-267
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,7 @@ pytest my_first_test.py --pdb
524524
--firefox-pref=SET # (Set a Firefox preference:value set, comma-separated.)
525525
--extension-zip=ZIP # (Load a Chrome Extension .zip|.crx, comma-separated.)
526526
--extension-dir=DIR # (Load a Chrome Extension directory, comma-separated.)
527+
--binary-location=PATH # (Set path of the Chromium browser binary to use.)
527528
--sjw # (Skip JS Waits for readyState to be "complete" or Angular to load.)
528529
--pls=PLS # (Set pageLoadStrategy on Chrome: "normal", "eager", or "none".)
529530
--headless # (Run tests in headless mode. The default arg on Linux OS.)

Diff for: examples/coffee_cart_tests.py

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def test_remove_added_coffee(self):
6565
self.open("https://seleniumbase.io/coffee/")
6666
self.assert_exact_text("cart (0)", 'a[aria-label="Cart page"]')
6767
self.assert_exact_text("Total: $0.00", "button.pay")
68+
self.wait_for_element('div[class="cup-body"]')
6869
self.click_visible_elements('div[class="cup-body"]', limit=6)
6970
self.assert_exact_text("cart (6)", 'a[aria-label="Cart page"]')
7071
self.assert_exact_text("Total: $74.00", 'button[data-test="checkout"]')

Diff for: examples/offline_examples/handle_alert_test.py

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
from seleniumbase import BaseCase
3+
BaseCase.main(__name__, __file__)
34

45

56
@pytest.mark.offline # Can be run with: "pytest -m offline"

Diff for: examples/offline_examples/load_html_test.py

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
from seleniumbase import BaseCase
3+
BaseCase.main(__name__, __file__)
34

45

56
@pytest.mark.offline # Can be run with: "pytest -m offline"

Diff for: examples/offline_examples/test_demo_page.py

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
22
import pytest
33
from seleniumbase import BaseCase
4+
BaseCase.main(__name__, __file__)
45

56

67
@pytest.mark.offline # Can be run with: "pytest -m offline"

Diff for: examples/offline_examples/user_agent_test.py

+29
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
from seleniumbase import BaseCase
3+
BaseCase.main(__name__, __file__)
34

45

56
@pytest.mark.offline # Can be run with: "pytest -m offline"
@@ -8,3 +9,31 @@ def test_get_user_agent(self):
89
self.open("data:,")
910
user_agent = self.get_user_agent()
1011
print('\nUser Agent = "%s"' % user_agent)
12+
13+
# Now change the user-agent using "execute_cdp_cmd()"
14+
if not self.is_chromium():
15+
msg = "\n* execute_cdp_cmd() is only for Chromium browsers"
16+
print(msg)
17+
self.skip(msg)
18+
print("\n--------------------------")
19+
try:
20+
self.driver.execute_cdp_cmd(
21+
"Network.setUserAgentOverride",
22+
{
23+
"userAgent": "Mozilla/5.0 "
24+
"(Nintendo Switch; WifiWebAuthApplet) "
25+
"AppleWebKit/606.4 (KHTML, like Gecko) "
26+
"NF/6.0.1.15.4 NintendoBrowser/5.1.0.20393"
27+
},
28+
)
29+
new_user_agent = self.get_user_agent()
30+
print('\nOverrided User Agent = "%s"' % new_user_agent)
31+
finally:
32+
# Reset the user-agent back to the original
33+
self.driver.execute_cdp_cmd(
34+
"Network.setUserAgentOverride",
35+
{"userAgent": user_agent},
36+
)
37+
print("\n--------------------------")
38+
user_agent = self.get_user_agent()
39+
print('\nUser Agent = "%s"' % user_agent)

Diff for: examples/raw_parameter_script.py

+1
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@
102102
sb.dashboard = False
103103
sb._dash_initialized = False
104104
sb.message_duration = None
105+
sb.binary_location = None
105106
sb.enable_3d_apis = False
106107
sb.block_images = False
107108
sb.do_not_track = False

Diff for: examples/test_agent.py

-47
This file was deleted.

Diff for: examples/test_coffee_cart.py

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
class CoffeeCartTest(BaseCase):
1111
def test_coffee_cart(self):
1212
self.open("https://seleniumbase.io/coffee/")
13+
self.assert_title("Coffee Cart")
1314
self.click('div[data-sb="Cappuccino"]')
1415
self.click('div[data-sb="Flat-White"]')
1516
self.click('div[data-sb="Cafe-Latte"]')

Diff for: examples/test_demo_site.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,6 @@ def test_demo_site(self):
113113
self.highlight("h2")
114114

115115
# Actions with Demo Mode enabled
116-
self.demo_mode = True
116+
self.activate_demo_mode()
117117
self.type("input", "Have a Nice Day!")
118118
self.assert_text("SeleniumBase", "h2")

Diff for: examples/test_docs_site.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44

55
class DocsSiteTests(BaseCase):
66
def test_docs(self):
7-
self.open("https://seleniumbase.io/examples/ReadMe/")
8-
self.assert_text("Running Example Tests", "h1")
9-
self.js_click('a[href="../../help_docs/customizing_test_runs/"]')
7+
self.open("https://seleniumbase.io/help_docs/customizing_test_runs/")
108
self.assert_text("Command Line Options", "h1")
119
self.js_click('a[href="../../examples/example_logs/ReadMe/"]')
1210
self.assert_text("Dashboard / Reports", "h1")

Diff for: examples/test_drag_and_drop.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Test drag_and_drop() on different pages."""
22
from seleniumbase import BaseCase
3+
BaseCase.main(__name__, __file__)
34

45

56
class DragAndDropTests(BaseCase):
@@ -12,6 +13,7 @@ def test_drag_and_drop(self):
1213

1314
def test_w3schools_drag_and_drop(self):
1415
self.open("https://seleniumbase.io/w3schools/drag_drop")
16+
self.assert_url_contains("drag_drop")
1517
self.click("button#runbtn")
1618
self.switch_to_frame("iframeResult")
1719
self.assert_element_not_visible("#div1 img#drag1")

Diff for: examples/test_sb_fixture.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# "sb" pytest fixture test in a method with no class
22
def test_sb_fixture_with_no_class(sb):
33
sb.open("https://google.com/ncr")
4+
sb.remove_elements("iframe")
45
sb.type('input[title="Search"]', "SeleniumBase GitHub\n")
56
sb.click('a[href*="github.com/seleniumbase/SeleniumBase"]')
67
sb.click('a[title="seleniumbase"]')
@@ -10,6 +11,7 @@ def test_sb_fixture_with_no_class(sb):
1011
class Test_SB_Fixture:
1112
def test_sb_fixture_inside_class(self, sb):
1213
sb.open("https://google.com/ncr")
14+
sb.remove_elements("iframe")
1315
sb.type('input[title="Search"]', "SeleniumBase GitHub\n")
1416
sb.click('a[href*="github.com/seleniumbase/SeleniumBase"]')
1517
sb.click('a[title="seleniumbase"]')

Diff for: examples/translations/dutch_test_1.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ def test_voorbeeld_1(self):
1717
self.controleren_tekst("Rijksmuseum", "#firstHeading")
1818
self.controleren_element('img[src*="Rijksmuseum"]')
1919
self.terug()
20-
self.controleren_ware("Stroopwafel" in self.huidige_url_ophalen())
20+
self.controleren_url_bevat("Stroopwafel")
2121
self.vooruit()
22-
self.controleren_ware("Rijksmuseum" in self.huidige_url_ophalen())
22+
self.controleren_url_bevat("Rijksmuseum")

Diff for: examples/translations/french_test_1.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ def test_exemple_1(self):
1717
self.vérifier_texte("Jardin des Tuileries", "#firstHeading")
1818
self.vérifier_élément('img[alt*="Jardin des Tuileries"]')
1919
self.retour()
20-
self.vérifier_vrai("brûlée" in self.obtenir_url_actuelle())
20+
self.vérifier_url_contient("brûlée")
2121
self.en_avant()
22-
self.vérifier_vrai("Jardin" in self.obtenir_url_actuelle())
22+
self.vérifier_url_contient("Jardin")

Diff for: examples/translations/italian_test_1.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ def test_esempio_1(self):
1717
self.verificare_testo("Colosseo", "#firstHeading")
1818
self.verificare_elemento('img[alt*="Colosse"]')
1919
self.indietro()
20-
self.verificare_vero("Pizza" in self.ottenere_url_corrente())
20+
self.verificare_url_contiene("Pizza")
2121
self.avanti()
22-
self.verificare_vero("Colosseo" in self.ottenere_url_corrente())
22+
self.verificare_url_contiene("Colosseo")

Diff for: examples/translations/portuguese_test_1.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ def test_exemplo_1(self):
1717
self.verificar_texto("Florianópolis", "h1#firstHeading")
1818
self.verificar_elemento('td:contains("Avenida Beira-Mar")')
1919
self.voltar()
20-
self.verificar_verdade("João" in self.obter_url_atual())
20+
self.verificar_url_contém("João_Pessoa")
2121
self.atualizar_a_página()
22-
self.digitar("#searchform input", "Teatro Amazonas")
22+
self.js_digitar("#searchform input", "Teatro Amazonas")
2323
self.clique("#searchform button")
2424
self.verificar_texto("Teatro Amazonas", "#firstHeading")
2525
self.verificar_texto_do_link("Festival Amazonas de Ópera")

Diff for: examples/translations/russian_test_1.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ def test_пример_1(self):
1717
self.подтвердить_текст("Операция «Ы» и другие приключения Шурика")
1818
self.подтвердить_элемент('img[alt="Постер фильма"]')
1919
self.назад()
20-
self.подтвердить_правду("университет" in self.получить_текущий_URL())
20+
self.подтвердить_URL_содержит("университет")
2121
self.вперед()
22-
self.подтвердить_правду("Шурика" in self.получить_текущий_URL())
22+
self.подтвердить_URL_содержит("Шурика")

Diff for: examples/translations/spanish_test_1.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ def test_ejemplo_1(self):
1717
self.verificar_texto("Palma de Mallorca", "#firstHeading")
1818
self.verificar_elemento('img[alt*="Palma"]')
1919
self.volver()
20-
self.verificar_verdad("Tibidabo" in self.obtener_url_actual())
20+
self.verificar_url_contiene("Tibidabo")
2121
self.adelante()
22-
self.verificar_verdad("Mallorca" in self.obtener_url_actual())
22+
self.verificar_url_contiene("Mallorca")

Diff for: examples/user_agent_test.py

+12-10
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,26 @@
44

55
class UserAgentTests(BaseCase):
66
def test_user_agent(self):
7-
self.open("https://www.whatsmyua.info/")
8-
user_agent_detected = self.get_text("#custom-ua-string")
7+
self.open("http://whatsmyuseragent.org/")
8+
user_agent_detected = self.get_text(".user-agent p")
99
original_user_agent = user_agent_detected
1010
if not self.user_agent:
1111
# Using the built-in user-agent string
12-
print("\n\nUser-Agent = %s\n" % user_agent_detected)
12+
print("\n\nUser-Agent: %s" % user_agent_detected)
1313
else:
1414
# User-agent was overridden using: --agent=STRING
15-
print("\n\nUser-Agent override = %s\n" % user_agent_detected)
15+
print("\n\nUser-Agent override: %s" % user_agent_detected)
16+
print("\n" + self.get_text(".ip-address p"))
1617
if not (self.headless or self.headless2 or self.xvfb):
1718
self.sleep(3)
19+
20+
# Now change the user-agent using "execute_cdp_cmd()"
1821
if not self.is_chromium():
19-
# Skip the rest of the test if not using a Chromium browser
2022
msg = "\n* execute_cdp_cmd() is only for Chromium browsers"
2123
print(msg)
2224
self.skip(msg)
25+
print("\n--------------------------")
2326
try:
24-
# Now change the user-agent using "execute_cdp_cmd()"
25-
print("--------------------------")
2627
self.driver.execute_cdp_cmd(
2728
"Network.setUserAgentOverride",
2829
{
@@ -32,9 +33,10 @@ def test_user_agent(self):
3233
"NF/6.0.1.15.4 NintendoBrowser/5.1.0.20393"
3334
},
3435
)
35-
self.open("https://www.whatsmyua.info/")
36-
user_agent_detected = self.get_text("#custom-ua-string")
37-
print("\nUser-Agent override = %s\n" % user_agent_detected)
36+
self.open("http://whatsmyuseragent.org/")
37+
user_agent_detected = self.get_text(".user-agent p")
38+
print("\nUser-Agent override: %s" % user_agent_detected)
39+
print("\n" + self.get_text(".ip-address p") + "\n")
3840
if not (self.headless or self.headless2 or self.xvfb):
3941
self.sleep(3)
4042
finally:

Diff for: help_docs/customizing_test_runs.md

+1
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ pytest my_first_test.py --settings-file=custom_settings.py
132132
--firefox-pref=SET # (Set a Firefox preference:value set, comma-separated.)
133133
--extension-zip=ZIP # (Load a Chrome Extension .zip|.crx, comma-separated.)
134134
--extension-dir=DIR # (Load a Chrome Extension directory, comma-separated.)
135+
--binary-location=PATH # (Set path of the Chromium browser binary to use.)
135136
--sjw # (Skip JS Waits for readyState to be "complete" or Angular to load.)
136137
--pls=PLS # (Set pageLoadStrategy on Chrome: "normal", "eager", or "none".)
137138
--headless # (Run tests in headless mode. The default arg on Linux OS.)

Diff for: help_docs/method_summary.md

+7-2
Original file line numberDiff line numberDiff line change
@@ -713,8 +713,9 @@ self.find_text(text, selector="html", by="css selector", timeout=None)
713713
# Duplicates: self.wait_for_text(text, selector="html", by="css selector", timeout=None)
714714
# self.wait_for_text_visible(text, selector="html", by="css selector", timeout=None)
715715

716-
self.wait_for_exact_text_visible(
717-
text, selector="html", by="css selector", timeout=None)
716+
self.find_exact_text(text, selector="html", by="css selector", timeout=None)
717+
# Duplicates: self.wait_for_exact_text(text, selector="html", by="css selector", timeout=None)
718+
# self.wait_for_exact_text_visible(text, selector="html", by="css selector", timeout=None)
718719

719720
self.assert_text(text, selector="html", by="css selector", timeout=None)
720721
# Duplicates: self.assert_text_visible(text, selector="html", by="css selector", timeout=None)
@@ -762,8 +763,12 @@ self.assert_element_not_visible(selector, by="css selector", timeout=None)
762763

763764
self.wait_for_text_not_visible(text, selector="html", by="css selector", timeout=None)
764765

766+
self.wait_for_exact_text_not_visible(text, selector="html", by="css selector", timeout=None)
767+
765768
self.assert_text_not_visible(text, selector="html", by="css selector", timeout=None)
766769

770+
self.assert_exact_text_not_visible(text, selector="html", by="css selector", timeout=None)
771+
767772
############
768773

769774
self.wait_for_attribute_not_present(

0 commit comments

Comments
 (0)