【问题标题】:How to wait for an element and click using name attribute如何等待元素并使用名称属性单击
【发布时间】:2019-04-15 13:27:05
【问题描述】:

我有下面的 html 标记,我试图通过 python 访问和点击...由于某种原因复制 xpath 并这样做是工作:

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

'name' 属性似乎是下面唯一的唯一标识符;我怎么能等待它首先存在,然后按名称属性查找元素并单击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()

【问题讨论】:

  • 你看the docs了吗?你找到了什么?你试过什么?

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


【解决方案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
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-17
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多