我在使用Chromedriver自动化页面时遇到的问题非常困难。我在登录页面中,以下是该页面的HTML外观:
<frame name="mainFrame" src>
<body>
<table ..>
<tr>
<td ..>
<input type="password" name="ui_pws">
</td>
..
..
..
</frame>
这是要点,页面当然有多个表格,div等... 我试图使用xpath //输入[@ name =“ui_pws”]在输入元素中输入密码。 但是找不到元素。
所以我认为这可能是因为错误的框架而且我试过了:
driver.switch_to_frame('mainFrame')
并且NoSuchFrameException失败了。 所以我转到:
main_frame = driver.find_element_by_xpath('//frame[@name="mainFrame"]')
driver.switch_to_frame(main_frame)
然后交叉验证我使用以下方法获取当前帧元素:
current_frame = driver.execute_script("return window.frameElement")
令我惊讶的是,在打印出来时我得到了两个不同的元素。 现在我真的很困惑我应该做什么来切换帧或访问网页中的密码字段。我从早上起喝了4杯咖啡,但仍然有脑冻。
有人可以指导我吗?
答案 0 :(得分:0)
你可以尝试,这在Java中也应该在python中几乎相似
driver.switchTo().defaultContent();
WebElement frameElement = driver.findElement(By.xpath("//frame[@name='mainFrame']"));
drive.switchTo().frame(frameElement);
SwitchTo defaultContent有助于正确聚焦,稍后我们可以切换到窗口中所需的帧。
答案 1 :(得分:0)
driver.switchTo().frame(driver.findElement(By.xpath("//frame[@ name='mainFrame']")));
//执行您想要对框架内的网络元素执行的操作(mainFrame),一旦完成操作,就会恢复默认
driver.switchTo().defaultContent();