首页 > 解决方案 > 使用 Selenium Python 3 查找按钮元素

问题描述

我对 Selenium 模块很陌生。我尝试单击此站点https://www.jumbomail.me/he/中的“המשך”按钮 。这是我的代码:

import time,selenium
from selenium import webdriver

PATH =  r'C:\Program Files (x86)\chrome\chromedriver.exe'
driver = webdriver.Chrome(PATH)
driver.get('https://www.jumbomail.me/he/')
input_fname=driver.find_element_by_id("tokenfield-tokenfield")
input_fname.send_keys('nareom@reg-ujmv.com')
input_fname = driver.find_element_by_class_name("send-button jm-button ng-binding ng- scope")

这是网页中的 HTML 代码:

<button type="submit" ng-click="vm.submit(false)" class="send-button jm-button ng- 
binding ng-scope" ga-click-event="['Send Form', 'Click', 'Next - Submit button']" 
data-uw-styling-context="true">                        המשך                    
</button>

当我运行它时,我收到此错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable 
to locate element: {"method":"css selector","selector":".send-button jm-button ng- 
binding ng-scope"}
            

标签: python-3.xseleniumselenium-chromedriver

解决方案


直接点击implicit还是Explicit wait不行,需要JS干预。

完整代码:

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

PATH =  r'C:\Program Files (x86)\chrome\chromedriver.exe'
driver = webdriver.Chrome(PATH)

driver.maximize_window()
driver.get("https://www.jumbomail.me/he/")
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='סגירה']"))).click()
button = driver.find_element_by_css_selector("button[ng-click='vm.submit(false)']")
driver.execute_script("arguments[0].click();", button)

推荐阅读