Selenium执行Javascript脚本使用参数和返回值
<p>在Selenium中可以使用drvier.execute_script()来执行Javascript脚本,支持多行语句。<br>使用Javascript可以实现以下功能:</p>
<ul>
<li>移除元素隐藏、禁用、只读等限制属性</li>
<li>为元素添加id或高亮样式</li>
<li>页面滚动</li>
<li>富文本框输入(HTML注入)</li>
<li>获取页面信息</li>
</ul>
<h2 id="使用javascript参数">使用Javascript参数</h2>
<p>在使用Javascript语句时,还可以动态传入参数或元素对象,Javascript语句中使用占位符“argument”来表示取第几个参数,如:</p>
<pre><code class="language-python">js = "arguments.setAttribute('style', arguments);"
</code></pre>
<p>这里埋设了两个参数,一个是元素对象,另一个是样式字符串。</p>
<pre><code class="language-python">element = driver.find_element_by_id("kw")
style = "background: red; border: 2px solid yellow;"
</code></pre>
<p>执行脚本时,按顺序携带参数即可:</p>
<pre><code class="language-python">driver.execute_script(js, element, style)
</code></pre>
<h2 id="获取javascript返回值">获取Javascript返回值</h2>
<p>在Javascript语句中加上return字样,如获取页面高度:</p>
<pre><code class="language-python">js = 'return document.documentElement.scrollHeight;'
</code></pre>
<p>执行该后便可以拿到其返回值:</p>
<pre><code class="language-python">page_height = driver.execute_script(js)
</code></pre>
<h2 id="完整示例">完整示例</h2>
<pre><code>import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
js = 'arguments.setAttribute("style", arguments);'
element = driver.find_element('id', 'kw')
style = 'background: red; border: 2px solid yellow;'
driver.execute_script(js, element, style)
page_height = driver.execute_script('return document.documentElement.scrollHeight;')
print(page_height)
time.sleep(3)
driver.quit()
</code></pre>
<p>运行结果如图:<br>
<img src="https://img2020.cnblogs.com/blog/1064540/202003/1064540-20200331114235142-2007022765.png" alt="" loading="lazy"></p>
<p>打印结果:</p>
<pre><code>890
</code></pre><br><br>
来源:https://www.cnblogs.com/superhin/p/12604080.html
頁:
[1]