Как получить атрибут z-index элемента, используя Selenium через Python? - PullRequest
0 голосов
/ 23 марта 2019

Мне сказали, что я могу проверить атрибут "z-index" веб-элементов, чтобы проверить их глубину. Сначала я использовал одно из следующих двух утверждений, чтобы найти элемент успешно.

e = WebDriverWait(tA.driver,1).until(EC.visibility_of_element_located((By.XPATH, xPath)))
e = WebDriverWait(tA.driver, 1).until(EC.element_to_be_clickable((By.XPATH, xPath)))

Затем я использовал следующий код Python с Firefox и Win10:

zi = e.value_of_css_property("z-index")

URL веб-страницы: https://irs.thsrc.com.tw/IMINT/ с всплывающим окном сообщения.

Я предположил, что z-индекс этого блока должен быть один, а остальные элементы должны быть равны нулю. Однако использование приведенного выше оператора python заставляет Selenium возвращать «auto» всем моим запросам. Я читал, что некоторые люди предположили, что запрос z-index не работает для элемента со значением позиции "static" Итак, на следующей странице: http://aludratest.github.io/aludratest/xref/org/aludratest/service/gui/web/selenium/selenium2/ZIndexSupport.html повторный запрос к свойству "z-index" выполняется до тех пор, пока он не станет "auto".
Но я попробовал это, и это привело к обнаружению ошибки после нескольких испытаний.

Мои вопросы следующие:

  1. Могу ли я изменить свойство position элемента в этом случае?
  2. Будет ли это работать, если я изменю свойство позиции элемента?

Спасибо

1 Ответ

1 голос
/ 23 марта 2019

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

  • CSS_SELECTOR:

    print(WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.ui-dialog.ui-widget.ui-widget-content.ui-corner-all"))).value_of_css_property("z-index"))
    
  • XPATH

    print(WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='ui-dialog ui-widget ui-widget-content ui-corner-all ']"))).value_of_css_property("z-index"))
    
  • Консольный вывод:

    1002
    
  • Примечание. Необходимо добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...