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

问题描述 投票:-2回答:1

有人告诉我,我可以检查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)))

然后我用firefox和win10使用了下面的python代码:

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

网页网址是https://irs.thsrc.com.tw/IMINT/,它有一个弹出消息框。

我认为这个盒子的z-index应该是1,其他元素应该是零。但是,使用上面的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. 如果我改变元素的position属性,它会工作吗?

谢谢

python css selenium z-index webdriverwait
1个回答
1
投票

好像你很亲密。所需的元素是一个动态元素,所以要找到你必须为visibility_of_element_located()引入WebDriverWait的元素,你可以使用以下任何一个Locator Strategies

  • CSS_SELECTORprint(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"))
  • XPATHprint(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
© www.soinside.com 2019 - 2024. All rights reserved.