使用Selenium Java如何通过driver.execute_script插入HTML button标签并指定位置?
完全可以通过driver.execute_script实现向页面插入自定义<button type="submit">元素,具体实现方案如下:
核心实现步骤
1. 先定位参考元素
首先定位到作为位置参照的邮箱输入框:
# Selenium 3.x 写法 email_input = driver.find_element_by_xpath("//input[@name='email']") # Selenium 4.x 写法(需要提前导入By) # from selenium.webdriver.common.by import By # email_input = driver.find_element(By.XPATH, "//input[@name='email']")
2. 执行JS插入按钮
插入位置可以通过原生DOM方法控制,两种常用场景的代码如下:
在邮箱输入框下方插入按钮
driver.execute_script(""" // 1. 创建提交按钮元素 const submitBtn = document.createElement('button'); submitBtn.type = 'submit'; submitBtn.textContent = '提交'; // 可选:给按钮设置唯一ID,方便后续用Selenium定位 submitBtn.id = 'custom_submit_btn'; // 2. 插入到邮箱输入框后方 arguments[0].after(submitBtn); // 可选:插入后直接点击按钮,无需额外定位 // submitBtn.click(); """, email_input)
在邮箱输入框上方插入按钮
仅需要修改插入逻辑的代码,把上述JS里的插入部分替换为:
arguments[0].parentNode.insertBefore(submitBtn, arguments[0]);
旧浏览器兼容写法
如果运行环境的浏览器不支持after方法,插入到下方的兼容代码为:
arguments[0].parentNode.insertBefore(submitBtn, arguments[0].nextSibling);
3. 点击插入的按钮
如果插入时没有直接在JS里触发点击,可以用Selenium定位后触发:
# 用之前设置的ID定位 submit_btn = driver.find_element(By.ID, 'custom_submit_btn') submit_btn.click()
注意事项
- 插入的自定义元素仅在当前页面未刷新的状态下生效,页面刷新、跳转后元素会消失
- 如果需要自定义提交逻辑,可以给按钮绑定
onclick事件,比如直接提交所在表单:submitBtn.onclick = () => arguments[0].closest('form').submit();
内容的提问来源于stack exchange,提问作者Inksis
相关产品推荐
相关产品推荐

