Как дождаться элемента и нажать, используя атрибут name - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть приведенная ниже 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 'name attribute' длямоя текущая актуальная наценка?

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

1 Ответ

1 голос
/ 16 апреля 2019

Чтобы найти и click() на нужном элементе вместо visibility_of_element_located(), вам нужно использовать WebDriverWait для element_to_be_clickable(), и вы можете использовать любой из следующих Стратегии локатора :

  • Использование 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
    
...