如何通过Python使用Selenium获取元素的z-index属性?

时间:2019-03-23 04:15:28

标签: python css selenium z-index webdriverwait

有人告诉我可以检查Web元素的“ 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索引应为1,其他元素应为零。但是,使用上面的python语句使Selenium对我的所有查询都返回“自动”。 我读到有人建议z-index查询不适用于位置值为“静态”的元素。 因此,在以下页面中:http://aludratest.github.io/aludratest/xref/org/aludratest/service/gui/web/selenium/selenium2/ZIndexSupport.html 重复查询“ z-index”属性,直到它不是“ auto”为止。
但是,我尝试了这一点,但经过几次试验,却导致定位失败。

我的问题如下:

  1. 在这种情况下可以更改元素的position属性吗?
  2. 如果我更改元素的position属性,它将起作用吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您似乎很近。所需的元素是动态元素,因此要定位必须为visibility_of_element_located()生成 WebDriverWait 的元素,可以使用以下Locator Strategies之一:

  • 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