python - 如何使用 Selenium WebDriver for IE 和 Python 查找过滤器按钮的元素:
问题描述
我对 StackOverflow 和一般编程很陌生。
我正在使用 Selenium 自动化我公司的计费系统(仅适用于 IE),我需要按下过滤器按钮才能在页面上显示我们的数据库所说的内容。为了找到元素,我尝试了许多 xpath 变体,但似乎没有任何效果。这是过滤器按钮的 HTML 行:
<input style="background:green;color:white;" type=button class=bttn onclick="form1.formfilter.value='1';form1.submit();" value="FILTER">
有没有办法找到这个元素value="FILTER"
?
我已经阅读了文档并寻找了这个答案,但我没有找到它,或者我只是没有搜索正确的关键字。
解决方案
FILTER要使用属性单击按钮,value="FILTER"
您必须诱导WebDriverWait并且element_to_be_clickable()
您可以使用以下任一Locator Strategies:
使用
CSS_SELECTOR
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.bttn[value='FILTER']"))).click()
使用
XPATH
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='bttn' and @value='FILTER']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
推荐阅读
- php - if(!isset($_SESSION['username'])) 导致用户从 verify_login_form.php 重定向回 index.php
- java - Spring @Qualifier 是否期望 bean ID 作为元素值?Spring @Qualifier 的元素 bean ID 是在幕后吗?
- angular - Angular 7 Service Worker 未在生产中缓存资产
- python - 无法启动芹菜工人(Flask 应用程序)
- python - 如何去除列中的特殊字符并将列转换为浮点数据
- laravel - 如何在 Laravel 上处理 'throw new DecryptException('The payload is invalid.')'
- gatling - 如何以 50 步递增计数器?
- hazelcast - 为什么 hazelcast-mancenter 看不到任何缓存统计信息?
- html - Angularjs 引导工具提示无法正常工作
- android - Android - 特定制造商的替代资源