视频搬运工 發表於 2021-5-19 23:08:00

selenium使用execute_script方法执行JavaScript

<p>同步请求运行js:&nbsp;&nbsp;</p>
<p>  driver.execute_script(script, *args)</p>
<ul>
<li>script:要运行的js语句</li>
<li>*args:运行js语句时使用的一些参数</li>
</ul>
<p>异步请求运行js:&nbsp;</p>
<p>  driver.execute_async_script(script, *args)</p>
<ul>
<li>script:要运行的js语句</li>
<li>*args:运行js语句时使用的一些参数</li>
</ul>
<p>&nbsp;</p>
<p>同步请求和异步请求的区别:</p>
<ul>
<li>
<p>同步请求指我们发送一个请求后,需要服务端进行返回相应结果后才能进行接下来的操作;</p>
</li>
</ul>
<ul>
<li>
<p>异步请求指我们发送一个请求后,不需要服务端返回响应结果,直接进行接下来的操作(例如AJAX)。</p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">from</span><span style="color: rgba(0, 0, 0, 1)"> selenium import webdriver
</span><span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> TestExample:
    def test_example1(self):
      driver </span>=<span style="color: rgba(0, 0, 0, 1)"> webdriver.Chrome()
      driver.maximize_window()
      driver.</span><span style="color: rgba(0, 0, 255, 1)">get</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://www.baidu.com/</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)#打开百度
      js </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">document.getElementById("su").value</span><span style="color: rgba(128, 0, 0, 1)">'# None</span><span style="color: rgba(0, 0, 0, 1)">
      js </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">return document.getElementById("su").value</span><span style="color: rgba(128, 0, 0, 1)">'# 想拿到javaScript执行的返回值,需要在js脚本前加上return百度一下</span><span style="color: rgba(0, 0, 0, 1)">
      print(driver.execute_script(js))
      driver.quit()</span></pre>
</div>
<p>通过selenium所定位的元素对象,来传递到js语句中,作为一个js中的一个元素对象来进行操作。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">from</span><span style="color: rgba(0, 0, 0, 1)"> selenium import webdriver
</span><span style="color: rgba(0, 0, 255, 1)">from</span><span style="color: rgba(0, 0, 0, 1)"> time import sleep
driver </span>=<span style="color: rgba(0, 0, 0, 1)"> webdriver.Chrome()
driver.</span><span style="color: rgba(0, 0, 255, 1)">get</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http://www.runoob.com/js/js-tutorial.html</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)

# 高亮显示所定位的元素
light_element </span>= driver.find_element_by_id(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
js_sentence_light </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">arguments.setAttribute('style', arguments);</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
js_sentence_args </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">color: yellow; border: 5px solid yellow;</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
driver.execute_script(js_sentence_light, light_element, js_sentence_args)
sleep(</span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">)

# 更改页面输入框中的默认文字
js_sentence_style </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">document.getElementById('s').placeholder='我改变了搜索输入框默认文字';</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
driver.execute_script(js_sentence_style)
sleep(</span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">)

# 改变滚动条位置
js_sentence_position </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">document.documentElement.scrollTop=999</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
driver.execute_script(js_sentence_position)
sleep(</span><span style="color: rgba(128, 0, 128, 1)">3</span>)</pre>
</div>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    dayehui<br><br>
来源:https://www.cnblogs.com/zrh-960906/p/14787945.html
頁: [1]
查看完整版本: selenium使用execute_script方法执行JavaScript