我正在尝试点击动态更改位置的特定元素,因此它也会更改xpaths
和css 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")))
非常感谢任何帮助。
答案 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