Selenium webdriverwait在元素中查找元素

时间:2017-06-29 23:40:42

标签: python selenium selenium-webdriver

我正在尝试点击动态更改位置的特定元素,因此它也会更改xpathscss selectors

尝试过xpath。

//*[@id="hld"]/div/div[X]/div[1]/h2/select

注意:根据各种因素,X的范围是2到10。

没有class名称或IDs可以使用。我必须使用的是tag名称。

我目前的代码如下。

h2 = driver.find_element_by_tag_name("h2")
select = h2.find_element_by_tag_name("select")
select.click()

不幸的是,select标签会在h2标签之后加载一段时间,而我正在尝试做一个webdriverwait,等到元素可点击/可见之后再运行上面的代码。

遗憾的是,单挑select元素的正确语法对我来说并不清楚。下面是找到h2标签的代码,但我试图将其展开以专注于select标签。

WebDriverWait(driver, 30).until(
EC.visibility_of_element_located((By.TAG_NAME, "h2")))

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

尝试删除动态div定位器 - 驱动程序将遍历页面上的元素,只有在它存在时才单击它。



from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait

xpath = ".//[@id="hld"]/div/div/div/h2/select"
timeout = 30    

WebDrierWait(driver, timeout).until(ec.presence_of_element_located(By.XPATH))

driver.find_element_by_xpath(xpath).click()




否则,如果驱动程序找到多个与您的xpath匹配的xpath,您可以尝试类似:



elements = driver.find_elements_by_xpath(xpath)

for element in elements:
   try:
      element.click()
    except ElementNotVisibleException:
       pass