selenium使用execute_script执行js代码控制操作下拉框并选择内容

前几天写过一篇文章,使用js来定位并操作网页上的下拉框,链接如下js通过xpath定位元素并且操作元素以下拉框select为例_小小爬虾的博客-CSDN博客

今天,要使用 selenium使用execute_script执行js代码控制操作下拉框并选择内容。

下拉框的样式如图: 

手动点击一下Month如图: 

selenium使用execute_script执行js代码控制操作下拉框并选择内容_第1张图片 

F12看一下代码:

selenium使用execute_script执行js代码控制操作下拉框并选择内容_第2张图片

以操作Month为例,代码如下: 

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

month_select = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, '//*[@id="biRegMonth"]')))
js="""
arguments[0].options[5].selected = true;
function fireEvent(element, event) {
                if (document.createEventObject) {
                    var evt = document.createEventObject();
                    return element.fireEvent('on' + event, evt)
                } else {
                    var evt = document.createEvent('HTMLEvents');
                    evt.initEvent(event, true, true)
                    return !element.dispatchEvent(evt);
                }
            };
fireEvent(arguments[0], 'change');
"""
driver.execute_script(js,month_select)#python selenium 执行js代码,arguments[0]指的就是month_select

运行代码,下拉框就会选中并且显示相应月份。

提示:

(1)如果js代码很多,而且有函数的话,最好是先单独拿出来用三引号处理,赋给一个变量,这样比较清晰。

如果js代码不长,可以直接写入 driver.execute_script(参数1,参数2)的参数1中,不过要写成一行,并且最好语句之间都用英文的;隔开。

(2)js代码中涉及到的节点(也就是参数2表示的节点),要用arguments[0]来表示。

你可能感兴趣的:(javascript,selenium,前端)