【发布时间】:2016-01-22 10:35:02
【问题描述】:
在使用 Selenium WebDriver 和 Chrome 进行一些网页抓取期间,我遇到了一个具有固定区域的页面(它们不滚动但相对于窗口保持固定)。通常,当我使用 Actions.MoveToElement() 请求 Web 浏览器滚动到特定控件时,该元素最终会被其中一个固定区域遮挡。当 Selenium 点击一个被遮挡的元素时,固定区域会窃取点击,我的控件不会被点击。
固定区域有一个class=SomeFixedPositionStyle。为了解决这个问题,我想让 Selenium 注入 Javascript 代码来遍历页面上的每种样式,并将其修改为设置 position:static,如果它是 position:fixed。我该怎么做?
我选择不修改固定元素的类属性,因为滚动页面的行为会将类属性重置为具有固定样式的原始值。
例如,看看http://www.ishares.com/us/products/239572/ishares-jp-morgan-usd-emerging-markets-bond-etf 。当您上下滚动时,您是否看到顶部和底部的条带是固定的?
当我尝试滚动到元素//*[@id="holdingsTabs"]/ul/li[3](这是“Holdings”部分中的“All”链接时,它会在下部固定区域下方结束,无法点击。
【问题讨论】:
-
你能让我们重现这个问题吗?谢谢。
标签: javascript html css selenium web-scraping