在Python中使用Selenium定位鼠标悬停元素?

时间:2017-06-08 17:38:21

标签: python selenium selenium-webdriver

我正在尝试找到一个元素(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/')]")))

1 个答案:

答案 0 :(得分:1)

检查悬停事件后新的h3标记在DOM中可用的时间。

在创建新的h3标记之前可能会触发find_element_by_xpath,如果是这种情况你可能想要动态等待新的h3标记