我正在尝试找到一个元素(h3
标记,只会通过悬停在其上显示)。经过一些搜索后,似乎ActionChains
中的selenium
是可行的方法。代码有两个步骤:1:找到鼠标悬停对象并悬停在它上面。第2步:找到新的appread h3标签。到目前为止,第1步很好。但是我在步骤2中遇到Unable to locate element:
错误。要提及的是,appeared
项目是iframe
对象。任何建议表示赞赏。
### Step 1: locate the mouseover object
each_username_h = review_block_html.find_element_by_xpath('.//div[starts-with(@class, "username")]')
Hover = ActionChains(driver).move_to_element(each_username_h)
Hover.perform()
### Step 2: locate new h3 tag
user_hyper_link = driver.find_element_by_xpath('.//h3[starts-with(@class, "username")]')
好像我需要点击悬停的项目。然后我还添加了一个动态等待项(感谢michael satish
),确保项目可用时找到它。
### Step 1: locate the mouseover object
each_username_h = review_block_html.find_element_by_xpath('.//div[starts-with(@class, "username")]')
Hover = ActionChains(driver).move_to_element(each_username_h)
Hover.perform()
### Step 1.5: click the item
each_username_h.click()
### Step 2: locate new h3 tag
user_hyper_link = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "//a[starts-with(@href, '/members/')]")))
答案 0 :(得分:1)
检查悬停事件后新的h3标记在DOM中可用的时间。
在创建新的h3标记之前可能会触发find_element_by_xpath,如果是这种情况你可能想要动态等待新的h3标记