一、selenium 抓取不到元素
一开始我以为是iframe
的问题 但是页面上并没有 后来我发现了一个shadowDOM
模块
涨这个样子,网上搜了搜大概的内容就是这个标签下面是封装好了的 ,跟原始文档有所区分,独立存在。导致了你找不到这个元素,·driver.page_source·都不行,抓取不到,网上找到了2种解决方案,我试了第一种,第二种没用代码尝试过不过手动是可以的,感兴趣的可以试一试
第一种:使用js抓取
1、先定位到shadow-root的宿主节点(此处为id=usercentrics-root的div),然后切换到shadow-root中
2、然后再选择shadow-root下的section标签
注1: 接下来的操作只能是children,看是第几个标签往后面跟0,1,2,3,4
注2:如果要是需要点击可以xxx.children[4].click()即可
例如:
document.getElementById(‘usercentrics-root’).shadowRoot.children[0].children[1].children[1].children[0].children[2].
3、用selenium 调用js
self.chrome.execute_script(button_js)
就大功告成了
第二种 简单粗暴的按键
导入 from selenium.webdriver.common.keys import Keys
driver.send_keys(Keys.TAB)
#按下TAB健
这种方法只可意会不可言传,需要各位在各自的页面上手动按下TAB键目测其变化方可写出优质代码
附上按键表
Keys.BACK_SPACE:回退键(BackSpace)
Keys.TAB:制表键(Tab)
Keys.ENTER:回车键(Enter)
Keys.SHIFT:大小写转换键(Shift)
Keys.CONTROL:Control键(Ctrl)
Keys.ALT:ALT键(Alt)
Keys.ESCAPE:返回键(Esc)
Keys.SPACE:空格键(Space)
Keys.PAGE_UP:翻页键上(Page Up)
Keys.PAGE_DOWN:翻页键下(Page Down)
Keys.END:行尾键(End)
Keys.HOME:行首键(Home)
Keys.LEFT:方向键左(Left)
Keys.UP:方向键上(Up)
Keys.RIGHT:方向键右(Right)
Keys.DOWN:方向键下(Down)
Keys.INSERT:插入键(Insert)
DELETE:删除键(Delete)
NUMPAD0 ~ NUMPAD9:数字键1-9
F1 ~ F12:F1 - F12键
(Keys.CONTROL, ‘a’):组合键Control+a,全选
(Keys.CONTROL, ‘c’):组合键Control+c,复制
(Keys.CONTROL, ‘x’):组合键Control+x,剪切
(Keys.CONTROL, ‘v’):组合键Control+v,粘贴
可以试着玩一玩