Selenium Python单击徽标按钮

时间:2018-10-24 12:45:45

标签: python selenium selenium-webdriver css-selectors

在我进行了一些下载后,我试图单击徽标按钮,以返回到原始页面。但是它不起作用,并且会引发以下异常:

NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"brand.brand-bv"}

结构是这样的:

<a class="brand brand-bv" href="https://workbench-c4.bazaarvoice.com">
  <span class="visuallyhidden">Bazaarvoice:</span>
</a>

我当前的代码是这样:

logo_button = driver.find_element_by_css_selector("brand.brand-bv")                                                      
logo_button.click()

enter image description here

2 个答案:

答案 0 :(得分:2)

brand也是一个类,如果您使用的是css_selector,则必须有前导.

driver.find_element_by_css_selector(".brand.brand-bv")

brand.brand-bv表示标记为brandbrand-bv类的元素

<brand class="brand-bv"/>

您还可以添加一些等待元素加载的条件

logo_button = WebDriverWait(driver, 10).until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, ".brand.brand-bv")))

您需要导入

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

答案 1 :(得分:0)

您还可以尝试使用xpath实现相同的功能,因为它使用起来更灵活, 找到要存储在var e中的元素,然后检查其长度(如果存在)然后单击,也可以尝试在实际单击元素之前使用wait元素。

e = driver.find_element_by_xpath("*//a[href='https://workbench-c4.bazaarvoice.com']")

if len(e) > 0
    e[0].click()

语法是

driver.find_element_by_xpath("*//TAGNAME[ATTRIBUTENAME='ATTIBVALUE']")