在使用 Chromedriver 自动化页面时,我很难理解我遇到的问题。我在登录页面中,页面的 HTML 如下所示:
<frame name="mainFrame" src>
<body>
<table ..>
<tr>
<td ..>
<input type="password" name="ui_pws">
</td>
..
..
..
</frame>
这是要点,页面当然有多个表格、div 等... 我正在尝试使用 xpath//input[@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 杯咖啡,但脑子还是冻僵了。
有人可以指导我吗?
最佳答案
你可以试试,这个在Java里应该和python里差不多
driver.switchTo().defaultContent();
WebElement frameElement = driver.findElement(By.xpath("//frame[@name='mainFrame']"));
drive.switchTo().frame(frameElement);
SwitchTo defaultContent 有助于正确聚焦,稍后我们可以切换到窗口中所需的框架。
关于python - 无法切换到框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20373580/