如何等待元素并单击使用名称属性

时间:2019-04-15 13:27:05

标签: python selenium-webdriver xpath css-selectors webdriverwait

我尝试访问以下html标记并通过python单击...由于某种原因,复制xpath并执行此操作

self.driver.find_element(By.XPATH, '//*`[@id="isc_8D"]/table/tbody/tr/td/table/tbody/tr/td[2]/img')`

似乎“名称”属性是下面唯一的唯一标识符;我如何等待它首先存在,然后按名称属性查找元素并单击python?即 name =“ isc_NXicon”

<img src="http://website:8080/DBWEBSITE/ui/sc/skins/Enterprise/images/TabSet/close.png" width="12" height="12" align="absmiddle" style="vertical-align:middle" name="isc_NXicon" eventpart="icon" border="0" suppress="TRUE" draggable="true">

我正在使用CSS选择器通过不同的元素进行以下操作:但是如何通过html的“名称属性”对当前的相关标记执行相同的操作?

WebDriverWait(self.driver, 15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".btn.btn-mini.btn-primary"))).click()

1 个答案:

答案 0 :(得分:1)

要找到所需元素并在其上click()而不是使用visibility_of_element_located(),您需要对 element_to_be_clickable() 使用 WebDriverWait ,然后您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "img[name='isc_NXicon'][src$='DBWEBSITE/ui/sc/skins/Enterprise/images/TabSet/close.png']"))).click()
    
  • 使用XPATH

    WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//img[@name='isc_NXicon' and contains(@src, 'DBWEBSITE/ui/sc/skins/Enterprise/images/TabSet/close.png')]"))).click()
    
  • 注意:您必须添加以下导入:

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