Skip to content

Commit

Permalink
Update the docs
Browse files Browse the repository at this point in the history
mdmintz committed Dec 17, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent d789801 commit cf68cda
Showing 4 changed files with 76 additions and 72 deletions.
30 changes: 17 additions & 13 deletions examples/cdp_mode/ReadMe/index.html
Original file line number Diff line number Diff line change
@@ -2748,29 +2748,33 @@ <h3 id="cdp-mode-usage">🐙 <b translate="no">CDP Mode</b> Usage<a class="heade
<p>(Call that from a <strong>UC Mode</strong> script)</p>
</blockquote>
<p>That disconnects WebDriver from Chrome (which prevents detection), and gives you access to <code>sb.cdp</code> methods (which don't trigger anti-bot checks).</p>
<p>Simple example: (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_planetmc.py">SeleniumBase/examples/cdp_mode/raw_planetmc.py</a>)</p>
<p>Simple example: (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_gitlab.py">SeleniumBase/examples/cdp_mode/raw_gitlab.py</a>)</p>
<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>

<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="k">as</span> <span class="n">sb</span><span class="p">:</span>
<span class="n">url</span> <span class="o">=</span> <span class="s2">&quot;www.planetminecraft.com/account/sign_in/&quot;</span>
<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>
<span class="n">url</span> <span class="o">=</span> <span class="s2">&quot;https://gitlab.com/users/sign_in&quot;</span>
<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>
<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>
<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="s2">&quot;#turnstile-widget div&quot;</span><span class="p">)</span>
<span class="n">sb</span><span class="o">.</span><span class="n">uc_gui_click_captcha</span><span class="p">()</span>
<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>
</code></pre></div>
<p><img src="https://seleniumbase.github.io/other/planet_mc.png" title="SeleniumBase" width="480"></p>
<p>(If the CAPTCHA wasn't initially bypassed, then the click gets the job done.)</p>
<p>Note that <code>PyAutoGUI</code> is an optional dependency. If calling a method that uses it when not already installed, then <code>SeleniumBase</code> will install it at run-time, which pauses the script briefly.</p>
<p>For standard Cloudflare pages, use <code>sb.uc_gui_click_captcha()</code> if Turnstiles aren't initially bypassed. Example: (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_gitlab.py">SeleniumBase/examples/cdp_mode/raw_gitlab.py</a>)</p>
<p><img src="https://seleniumbase.github.io/other/cf_sec.jpg" title="SeleniumBase" width="332"> <img src="https://seleniumbase.github.io/other/gitlab_bypass.png" title="SeleniumBase" width="288"></p>
<p>(If the CAPTCHA wasn't bypassed automatically, then <code>sb.uc_gui_click_captcha()</code> gets the job done.)</p>
<p>Note that <code>PyAutoGUI</code> is an optional dependency. If calling a method that uses it when not already installed, then <code>SeleniumBase</code> installs <code>PyAutoGUI</code> at run-time.</p>
<hr />
<p>For Cloudflare CAPTCHAs that appear as part of a websites, you may need to use <code>sb.cdp.gui_click_element(selector)</code> instead (if the Turnstile wasn't bypassed automatically). Example: (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_planetmc.py">SeleniumBase/examples/cdp_mode/raw_planetmc.py</a>)</p>
<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>

<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>
<span class="n">url</span> <span class="o">=</span> <span class="s2">&quot;https://gitlab.com/users/sign_in&quot;</span>
<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="k">as</span> <span class="n">sb</span><span class="p">:</span>
<span class="n">url</span> <span class="o">=</span> <span class="s2">&quot;www.planetminecraft.com/account/sign_in/&quot;</span>
<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>
<span class="n">sb</span><span class="o">.</span><span class="n">uc_gui_click_captcha</span><span class="p">()</span>
<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>
<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="s2">&quot;#turnstile-widget div&quot;</span><span class="p">)</span>
<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>
</code></pre></div>
<p><img src="https://seleniumbase.github.io/other/cf_sec.jpg" title="SeleniumBase" width="404"> <img src="https://seleniumbase.github.io/other/gitlab_bypass.png" title="SeleniumBase" width="350"></p>
<p><img src="https://seleniumbase.github.io/other/planet_mc.png" title="SeleniumBase" width="480"></p>
<p>When using <code>sb.cdp.gui_click_element(selector)</code> on CF Turnstiles, use the parent <code>selector</code> that appears <strong>above</strong> the <code>#shadow-root</code> element:
Eg. <code>sb.cdp.gui_click_element("#turnstile-widget div")</code></p>
<p><img src="https://seleniumbase.github.io/other/above_shadow.png" title="SeleniumBase" width="480"></p>
<hr />
<h3 id="here-are-a-few-common-sbcdp-methods">🐙 Here are a few common <code>sb.cdp</code> methods<a class="headerlink" href="#here-are-a-few-common-sbcdp-methods" title="Permanent link">&para;</a></h3>
<ul>
8 changes: 4 additions & 4 deletions index.html
Original file line number Diff line number Diff line change
@@ -2628,15 +2628,15 @@ <h1>SeleniumBase</h1>
</blockquote>
<p><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_google.py"><img src="https://seleniumbase.github.io/cdn/gif/google_search.gif" alt="SeleniumBase Test" title="SeleniumBase Test" width="420" /></a></p>
<hr />
<p align="left">📗 Here's an example of bypassing bot-detection on a site that uses Cloudflare: <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_gitlab.py">SeleniumBase/examples/cdp_mode/raw_gitlab.py</a></p>
<p align="left">📗 Here's an example of bypassing Cloudflare's challenge page: <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_gitlab.py">SeleniumBase/examples/cdp_mode/raw_gitlab.py</a></p>

<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>

<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>
<span class="n">url</span> <span class="o">=</span> <span class="s2">&quot;https://gitlab.com/users/sign_in&quot;</span>
<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>
<span class="n">sb</span><span class="o">.</span><span class="n">uc_gui_click_captcha</span><span class="p">()</span> <span class="c1"># PyAutoGUI if needed</span>
<span class="n">sb</span><span class="o">.</span><span class="n">save_screenshot_to_logs</span><span class="p">()</span>
<span class="n">sb</span><span class="o">.</span><span class="n">uc_gui_click_captcha</span><span class="p">()</span>
<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>
</code></pre></div>
<p><img src="https://seleniumbase.github.io/other/cf_sec.jpg" title="SeleniumBase" width="332"> <img src="https://seleniumbase.github.io/other/gitlab_bypass.png" title="SeleniumBase" width="288"></p>
<hr />
@@ -3264,7 +3264,7 @@ <h3><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase"
<p>You can run it from the <code>examples/</code> folder like this:</p>
<div class="highlight"><pre><span></span><code>pytest<span class="w"> </span>test_fail.py
</code></pre></div>
<p>🔵 You'll notice that a logs folder, "latest_logs", was created to hold information about the failing test, and screenshots. During test runs, past results get moved to the archived_logs folder if you have ARCHIVE_EXISTING_LOGS set to True in <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/config/settings.py">settings.py</a>, or if your run tests with <code>--archive-logs</code>. If you choose not to archive existing logs, they will be deleted and replaced by the logs of the latest test run.</p>
<p>🔵 You'll notice that a logs folder, <code>./latest_logs/</code>, was created to hold information (and screenshots) about the failing test. During test runs, past results get moved to the archived_logs folder if you have ARCHIVE_EXISTING_LOGS set to True in <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/config/settings.py">settings.py</a>, or if your run tests with <code>--archive-logs</code>. If you choose not to archive existing logs, they will be deleted and replaced by the logs of the latest test run.</p>
<hr />
<p><a id="seleniumbase_dashboard"></a></p>
<h2><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> SeleniumBase Dashboard:</h2>
2 changes: 1 addition & 1 deletion search/search_index.json

Large diffs are not rendered by default.

108 changes: 54 additions & 54 deletions sitemap.xml
Original file line number Diff line number Diff line change
@@ -2,218 +2,218 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://seleniumbase.io/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/case_summary/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/behave_bdd/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/cdp_mode/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/chart_maker/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/dialog_boxes/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/example_logs/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/master_qa/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/migration/raw_selenium/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/presenter/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/tour_examples/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/examples/visual_testing/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/behave_gui/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/case_plans/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/chinese/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/commander/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/customizing_test_runs/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/demo_mode/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/desired_capabilities/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/features_list/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/handling_iframes/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/happy_customers/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/hidden_files_info/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/how_it_works/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/html_inspector/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/install/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/install_python_pip_git/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/js_package_manager/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/locale_codes/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/method_summary/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/mobile_testing/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/mysql_installation/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/recorder_mode/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/shadow_dom/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/syntax_formats/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/thank_you/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/translations/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/uc_mode/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/useful_grep_commands/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/using_safari_driver/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/verify_webdriver/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/virtualenv_instructions/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/help_docs/webdriver_installation/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/integrations/azure/azure_pipelines/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/integrations/azure/jenkins/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/integrations/docker/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/integrations/github/workflows/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/integrations/google_cloud/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/seleniumbase/common/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/seleniumbase/console_scripts/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/seleniumbase/masterqa/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
<url>
<loc>https://seleniumbase.io/seleniumbase/utilities/selenium_grid/ReadMe/</loc>
<lastmod>2024-12-16</lastmod>
<lastmod>2024-12-17</lastmod>
</url>
</urlset>

0 comments on commit cf68cda

Please sign in to comment.