我是硒和网络自动化任务的新手,我正在尝试使用 chromedriver 编写一个应用程序,用于在 PubMed 上自动搜索论文。
我的目标是点击 PubMed 主页右上角的“登录”按钮,所以问题是:
当我手动打开 PubMed 主页时,html 源中没有 iframes 标签,因此“登录”元素应该可以通过其 xpath 轻松访问"//*[@id="sign_in"]"
。
当同一页面由 selenium 打开时,我无法通过其 xpath 找到“登录”元素,并且如果尝试检查它,html 源似乎已将其嵌入到标签中<iframe>
,因此无法再找到它,除非一个driver._switch_to.frame
方法被执行。但是如果我打开html源代码并Ctrl+U
搜索<iframe>
element,仍然没有它们。这是“登录”元素检查捕获:
["Sign in" inspection][1]
我已经通过以下方式解决了这个问题:
bot = PubMedBot()
bot.driver.get('https://www.ncbi.nlm.nih.gov/pubmed')
sleep(2)
frames = bot.driver.find_elements_by_tag_name('iframe')
bot.driver._switch_to.frame(frames[0])
btn = bot.driver.find_element_by_xpath('/html/body/a')
btn.click()
但我想了解的是为什么检查代码与 html 源代码不同,这个<iframe>元素是否真的不知从何而来,如果是的话为什么。
守着一只汪
相关分类