Skip to content

Commit c2b8443

Browse files
committed
Update the docs
1 parent ccb900e commit c2b8443

File tree

3 files changed

+165
-55
lines changed

3 files changed

+165
-55
lines changed

examples/cdp_mode/ReadMe/index.html

Lines changed: 111 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,24 @@
928928
</span>
929929
</a>
930930

931+
</li>
932+
933+
<li class="md-nav__item">
934+
<a href="#example-4-walmart-site-using-akamai-protection-with-perimeterx" class="md-nav__link">
935+
<span class="md-ellipsis">
936+
🔖 Example 4: (Walmart site using Akamai protection with PerimeterX)
937+
</span>
938+
</a>
939+
940+
</li>
941+
942+
<li class="md-nav__item">
943+
<a href="#example-5-nike-site-using-shape-security" class="md-nav__link">
944+
<span class="md-ellipsis">
945+
🔖 Example 5: (Nike site using Shape Security)
946+
</span>
947+
</a>
948+
931949
</li>
932950

933951
<li class="md-nav__item">
@@ -2707,6 +2725,24 @@
27072725
</span>
27082726
</a>
27092727

2728+
</li>
2729+
2730+
<li class="md-nav__item">
2731+
<a href="#example-4-walmart-site-using-akamai-protection-with-perimeterx" class="md-nav__link">
2732+
<span class="md-ellipsis">
2733+
🔖 Example 4: (Walmart site using Akamai protection with PerimeterX)
2734+
</span>
2735+
</a>
2736+
2737+
</li>
2738+
2739+
<li class="md-nav__item">
2740+
<a href="#example-5-nike-site-using-shape-security" class="md-nav__link">
2741+
<span class="md-ellipsis">
2742+
🔖 Example 5: (Nike site using Shape Security)
2743+
</span>
2744+
</a>
2745+
27102746
</li>
27112747

27122748
<li class="md-nav__item">
@@ -2890,7 +2926,7 @@ <h3 id="example-2-hyatt-site-using-kasada-protection">🔖 Example 2: (Hyatt sit
28902926
<span class="s1">&#39;div[data-booking-status=&quot;BOOKABLE&quot;] [class*=&quot;HotelCard_header&quot;]&#39;</span>
28912927
<span class="p">)</span>
28922928
<span class="n">hotel_prices</span> <span class="o">=</span> <span class="n">sb</span><span class="o">.</span><span class="n">cdp</span><span class="o">.</span><span class="n">select_all</span><span class="p">(</span>
2893-
<span class="s1">&#39;div[data-booking-status=&quot;BOOKABLE&quot;] div.rate-currency&#39;</span>
2929+
<span class="s1">&#39;div[data-booking-status=&quot;BOOKABLE&quot;] div.rate&#39;</span>
28942930
<span class="p">)</span>
28952931
<span class="n">sb</span><span class="o">.</span><span class="n">assert_true</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">hotel_names</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">hotel_prices</span><span class="p">))</span>
28962932
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Hyatt Hotels in </span><span class="si">%s</span><span class="s2">:&quot;</span> <span class="o">%</span> <span class="n">location</span><span class="p">)</span>
@@ -2946,6 +2982,80 @@ <h3 id="example-3-bestwestern-site-using-datadome-protection">🔖 Example 3: (B
29462982

29472983
</details>
29482984

2985+
<h3 id="example-4-walmart-site-using-akamai-protection-with-perimeterx">🔖 Example 4: (Walmart site using Akamai protection with PerimeterX)<a class="headerlink" href="#example-4-walmart-site-using-akamai-protection-with-perimeterx" title="Permanent link">&para;</a></h3>
2986+
<ul>
2987+
<li><a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode/raw_walmart.py">SeleniumBase/examples/cdp_mode/raw_walmart.py</a></li>
2988+
</ul>
2989+
<div></div>
2990+
<details>
2991+
<summary> ▶️ (<b>Click to expand code preview</b>)</summary>
2992+
2993+
<div class="highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">seleniumbase</span> <span class="kn">import</span> <span class="n">SB</span>
2994+
2995+
<span class="k">with</span> <span class="n">SB</span><span class="p">(</span><span class="n">uc</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">test</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">locale_code</span><span class="o">=</span><span class="s2">&quot;en&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">sb</span><span class="p">:</span>
2996+
<span class="n">url</span> <span class="o">=</span> <span class="s2">&quot;https://www.walmart.com/&quot;</span>
2997+
<span class="n">sb</span><span class="o">.</span><span class="n">activate_cdp_mode</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
2998+
<span class="n">sb</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">2.5</span><span class="p">)</span>
2999+
<span class="n">sb</span><span class="o">.</span><span class="n">cdp</span><span class="o">.</span><span class="n">mouse_click</span><span class="p">(</span><span class="s1">&#39;input[aria-label=&quot;Search&quot;]&#39;</span><span class="p">)</span>
3000+
<span class="n">sb</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">1.2</span><span class="p">)</span>
3001+
<span class="n">search</span> <span class="o">=</span> <span class="s2">&quot;Settlers of Catan Board Game&quot;</span>
3002+
<span class="n">required_text</span> <span class="o">=</span> <span class="s2">&quot;Catan&quot;</span>
3003+
<span class="n">sb</span><span class="o">.</span><span class="n">cdp</span><span class="o">.</span><span class="n">press_keys</span><span class="p">(</span><span class="s1">&#39;input[aria-label=&quot;Search&quot;]&#39;</span><span class="p">,</span> <span class="n">search</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
3004+
<span class="n">sb</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">3.8</span><span class="p">)</span>
3005+
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;*** Walmart Search for &quot;</span><span class="si">%s</span><span class="s1">&quot;:&#39;</span> <span class="o">%</span> <span class="n">search</span><span class="p">)</span>
3006+
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39; (Results must contain &quot;</span><span class="si">%s</span><span class="s1">&quot;.)&#39;</span> <span class="o">%</span> <span class="n">required_text</span><span class="p">)</span>
3007+
<span class="n">unique_item_text</span> <span class="o">=</span> <span class="p">[]</span>
3008+
<span class="n">items</span> <span class="o">=</span> <span class="n">sb</span><span class="o">.</span><span class="n">cdp</span><span class="o">.</span><span class="n">find_elements</span><span class="p">(</span><span class="s1">&#39;div[data-testid=&quot;list-view&quot;]&#39;</span><span class="p">)</span>
3009+
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span>
3010+
<span class="k">if</span> <span class="n">required_text</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
3011+
<span class="n">description</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">querySelector</span><span class="p">(</span>
3012+
<span class="s1">&#39;[data-automation-id=&quot;product-price&quot;] + span&#39;</span>
3013+
<span class="p">)</span>
3014+
<span class="k">if</span> <span class="n">description</span> <span class="ow">and</span> <span class="n">description</span><span class="o">.</span><span class="n">text</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">unique_item_text</span><span class="p">:</span>
3015+
<span class="n">unique_item_text</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">description</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
3016+
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;* &quot;</span> <span class="o">+</span> <span class="n">description</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
3017+
<span class="n">price</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">querySelector</span><span class="p">(</span>
3018+
<span class="s1">&#39;[data-automation-id=&quot;product-price&quot;]&#39;</span>
3019+
<span class="p">)</span>
3020+
<span class="k">if</span> <span class="n">price</span><span class="p">:</span>
3021+
<span class="n">price_text</span> <span class="o">=</span> <span class="n">price</span><span class="o">.</span><span class="n">text</span>
3022+
<span class="n">price_text</span> <span class="o">=</span> <span class="n">price_text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;current price Now &quot;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
3023+
<span class="n">price_text</span> <span class="o">=</span> <span class="n">price_text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;current price &quot;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
3024+
<span class="n">price_text</span> <span class="o">=</span> <span class="n">price_text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
3025+
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot; (&quot;</span> <span class="o">+</span> <span class="n">price_text</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span><span class="p">)</span>
3026+
</code></pre></div>
3027+
3028+
</details>
3029+
3030+
<h3 id="example-5-nike-site-using-shape-security">🔖 Example 5: (Nike site using Shape Security)<a class="headerlink" href="#example-5-nike-site-using-shape-security" title="Permanent link">&para;</a></h3>
3031+
<ul>
3032+
<li><a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode/raw_nike.py">SeleniumBase/examples/cdp_mode/raw_nike.py</a></li>
3033+
</ul>
3034+
<div></div>
3035+
<details>
3036+
<summary> ▶️ (<b>Click to expand code preview</b>)</summary>
3037+
3038+
<div class="highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">seleniumbase</span> <span class="kn">import</span> <span class="n">SB</span>
3039+
3040+
<span class="k">with</span> <span class="n">SB</span><span class="p">(</span><span class="n">uc</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">test</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">locale_code</span><span class="o">=</span><span class="s2">&quot;en&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">sb</span><span class="p">:</span>
3041+
<span class="n">url</span> <span class="o">=</span> <span class="s2">&quot;https://www.nike.com/&quot;</span>
3042+
<span class="n">sb</span><span class="o">.</span><span class="n">activate_cdp_mode</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
3043+
<span class="n">sb</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
3044+
<span class="n">sb</span><span class="o">.</span><span class="n">cdp</span><span class="o">.</span><span class="n">gui_click_element</span><span class="p">(</span><span class="s1">&#39;div[data-testid=&quot;user-tools-container&quot;]&#39;</span><span class="p">)</span>
3045+
<span class="n">sb</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">1.5</span><span class="p">)</span>
3046+
<span class="n">search</span> <span class="o">=</span> <span class="s2">&quot;Nike Air Force 1&quot;</span>
3047+
<span class="n">sb</span><span class="o">.</span><span class="n">cdp</span><span class="o">.</span><span class="n">press_keys</span><span class="p">(</span><span class="s1">&#39;input[type=&quot;search&quot;]&#39;</span><span class="p">,</span> <span class="n">search</span><span class="p">)</span>
3048+
<span class="n">sb</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
3049+
<span class="n">elements</span> <span class="o">=</span> <span class="n">sb</span><span class="o">.</span><span class="n">cdp</span><span class="o">.</span><span class="n">select_all</span><span class="p">(</span><span class="s1">&#39;ul[data-testid*=&quot;products&quot;] figure .details&#39;</span><span class="p">)</span>
3050+
<span class="k">if</span> <span class="n">elements</span><span class="p">:</span>
3051+
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;**** Found results for &quot;</span><span class="si">%s</span><span class="s1">&quot;: ****&#39;</span> <span class="o">%</span> <span class="n">search</span><span class="p">)</span>
3052+
<span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">elements</span><span class="p">:</span>
3053+
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;* &quot;</span> <span class="o">+</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
3054+
<span class="n">sb</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
3055+
</code></pre></div>
3056+
3057+
</details>
3058+
29493059
<p>(<b>Note:</b> Extra <code translate="no">sb.sleep()</code> calls have been added to prevent bot-detection because some sites will flag you as a bot if you perform actions too quickly.)</p>
29503060
<p>(<b>Note:</b> Some sites may IP-block you for 36 hours or more if they catch you using regular <span translate="no">Selenium WebDriver</span>. Be extra careful when creating and/or modifying automation scripts that run on them.)</p>
29513061
<hr />

search/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)