python - Python selenium单击没有id的按钮
问题描述
我有这个代码
<a href="#" class="button expanded vote" style="background: rgb(51, 204, 102) none repeat scroll 0% 0%; border-radius: 5px;" onclick="Poll.sendAnswer("Programn2015","Answer1","Answer2")">Vote</a>
我能做什么?页面上还有其他按钮具有相同的类等,唯一的变量是
"Answer1","Answer2"
解决方案
要单击带有文本作为投票的链接,您可以使用以下任一解决方案:
css_selector
:driver.find_element_by_css_selector("a.button.expanded.vote[onclick*='Answer1'][onclick*='Answer2']").click()
xpath
:driver.find_element_by_xpath("//a[@class='button expanded vote' and contains(.,'Vote')][contains(@onclick,'Answer1') and contains(@onclick,'Answer2')]").click()
更新
诱导WebDriverWait使所需元素可单击,如下所示:
css_selector
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.button.expanded.vote[onclick*='Answer1'][onclick*='Answer2']"))).click()
xpath
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='button expanded vote' and contains(.,'Vote')][contains(@onclick,'Answer1') and contains(@onclick,'Answer2')]"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
推荐阅读
- r - 在 r 编程中拆分数据集
- c# - 如何在 ASP.NET Core RazorPages 中绑定复杂列表
- flutter - 无法检索 api 数据
- perl - 对另一个哈希内的哈希的引用给出了在连接 (.) 或字符串中使用未初始化的值
- mysql - mysql索引优化问题
- asp.net-core - ASP.NET Core DI 直接访问容器
- security - 保护 .NET Core MVC 网站免受暴力登录尝试(通过内置方式)
- html - 我的标题在按钮悬停效果时晃动
- javascript - JavaScript 动态同步函数队列
- sql-server - 在 If 语句中使用值后从存储过程中返回一个值