微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查找元素以单击过滤器按钮的问题 - 硒

如何解决查找元素以单击过滤器按钮的问题 - 硒

我正在尝试使用 Selenium 自动化我的工作中的一项任务。 一切都很顺利,直到我不得不点击过滤按钮。

我尝试使用 find_element_by_xpath 但它出错了。 (我尝试过 CSS 选择器和链接文本,但它也出错了)。

我被困在那个部分。有人可以帮助这个绝望的巴西女孩吗?哈哈

我尝试过的事情:

 nav.find_element_by_css_selector('.btn-lg').click()

错误:NoSuchElementException:消息:没有这样的元素:无法定位元素:{"method":"css selector","selector":".btn-lg"}

nav.find_element_by_xpath('/html/body/div[4]/div/div[2]/div/div/div[3]/div/div[2]/div[1]/div/div/form/div[1]/button').click()

错误:NoSuchElementException:消息:没有这样的元素:无法定位元素:{"method":"xpath","selector":"/html/body/div[4]/div/div[2]/div /div/div[3]/div/div[2]/div[1]/div/div/form/div[1]/button"}

来自按钮的 HTML:

<button type="button" class="btn btn-default btn-lg" title="Filtros" ng-click="openFilters()" ga-event="" ga-label="open-orders-filters"><span class="uim-filter-count badge">1</span> <i class="icon-filter"></i></button>

<div class="uim-btn-filter uim-filter-checked" ng-class="{ 'uim-filter-checked': filters.getAppliedFilters().length }"><button type="button" class="btn btn-default btn-lg" title="Filtros" ng-click="openFilters()" ga-event="" ga-label="open-orders-filters"><span class="uim-filter-count badge">1</span> <i class="icon-filter"></i></button></div>

谢谢!

解决方法

试试这个

driver.find_element_by_xpath(".//button[@title='Filtros']").click()
,

试试这个 Xpath

'//button[@ng-click="openFilters()"]'

或者这个

'//button[@title="Filtros()"]'

'//button[@title="Filtros()" and (@ng-click="openFilters()")]'

如果您的元素在 iframe 内,您需要执行以下操作:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait

wait(driver,10).until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_tag_name("iframe")))

我在这里根据它的标签名称提到了 iframe。根据适合您情况的实际定位器,您可能需要使用其他定位器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。