在我进行了一些下载后,我试图单击徽标按钮,以返回到原始页面。但是它不起作用,并且会引发以下异常:
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()
答案 0 :(得分:2)
brand
也是一个类,如果您使用的是css_selector
,则必须有前导.
driver.find_element_by_css_selector(".brand.brand-bv")
brand.brand-bv
表示标记为brand
和brand-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']")