如何在Python中使用硒单击按钮

时间:2020-05-10 18:35:05

标签: python html python-3.x selenium

我的HTML代码如下:

<button aria-label="Nur zuhören" aria-disabled="false" class=
"jumbo--Z12Rgj4 buttonWrapper--x8uow audioBtn--1H6rCK">

并且我想单击带有以下Python代码的按钮:

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

wait(driver, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, "jumbo--Z12Rgj4 buttonWrapper--x8uow audioBtn--1H6rCK"))).click

但它不起作用

3 个答案:

答案 0 :(得分:0)

如果要查找具有多个类名的元素,则可以使用XPATH。

我将HTML简化为<button class="aaa bbb ccc">

然后,您可以使用(By.XPATH, "//button[contains(@class, 'aaa') and contains(@class, 'bbb') and contains(@class, 'ccc')]")查找此按钮。

答案 1 :(得分:0)

尝试捕获Webelement中的元素,然后尝试执行期望的条件命令。它应该可以工作

click_ele = driver.find_element_by_class_name(巨型--Z12Rgj4 buttonWrapper--x8uow audioBtn--1H6rCK)

wait(驱动程序,20).until(EC.element_to_be_clickable(click_ele.click)))

wait(驱动程序,20).until(EC.element_to_be_clickable((By.CLASS_NAME,“ jumbo--Z12Rgj4 buttonWrapper--x8uow audioBtn--1H6rCK”)))。单击

.click可能不是下拉菜单中的一个选项,因为它带有2个位置参数

答案 2 :(得分:0)

硒无法通过multiple class names找到class name,而是使用css selector.

在下面的 css 选择器中尝试。

wait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".jumbo--Z12Rgj4.buttonWrapper--x8uow.audioBtn--1H6rCK"))).click()

OR

wait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[aria-label='Nur zuhören']"))).click()

希望这会有所帮助。