这里有严重的问题。有人请帮忙。
我正在尝试登录网站。 - 这个工作!
登录后重定向到我想要的页面 - 这有效!
现在进入后,我必须将鼠标悬停在 设置图标上,以便下拉列表显示,然后点击“设置”选项无ID或CLASS或HREF 。
现在我有几个原因无法做到这一点。数字1是如果我在悬停后尝试点击链接,它告诉我它是隐藏的,我无法与它进行交互。此外,表格中的菜单选项会在您悬停时通过ajax进行填充和追加。它们不在初始页面加载上。
wait = WebDriverWait(driver, 10)
box = wait.until(EC.visibility_of_element_located((By.ID, "yucs-help_button")))
menuButton = driver.find_element_by_id("yucs-help_button")
ActionChains(driver).move_to_element(menuButton).perform()
在部署上述代码之后,我打印了driver.page_source并且可以看到(下面)新菜单选项在那里,如果你没有悬停,下面的代码将不在页面上。
现在,我试图点击的<a>
是<span>Settings</span>
选项,而对于我的生活,它将无效。无法找到它,无法点击,无法与之互动等等,xpath
,css_selector
,partial_name
,没有找到这个东西。还有一点奇怪的是,一旦你点击它,从浏览器中,它会将一个ID附加到<span>
这太奇怪了。有什么想法吗?
<a data-ylk="rspns:nav;t3:tl-lst;t5:custitm;slk:custitm;elm:itm;elmt:custitm;itc:0;cpos:2" class="C(#000)! Td(u):h " data-mad="options" data-customevt="true" href="#" data-rapid_p="18"><span>Settings</span></a>
答案 0 :(得分:0)
要在元素上执行mouse over
事件,您应该尝试使用.execute_script()
后面的java script
: -
wait = WebDriverWait(driver, 10)
box = wait.until(EC.visibility_of_element_located((By.ID, "yucs-help_button")))
menuButton = driver.find_element_by_id("yucs-help_button")
driver.execute_script("var clickEvent = document.createEvent('MouseEvents');clickEvent.initEvent('mouseover', true, true); arguments[0].dispatchEvent(clickEvent);", menuButton)
现在成功mouse over
后,您应该尝试点击Settings
链接,如下所示: -
driver.find_element_by_xpath("//span[contains(text(), 'Settings')]/parent::a[@data-mad = 'options']").click()
希望它会对你有所帮助.. :)