我尝试访问以下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()
答案 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