Python Selenium在网页崩溃/展开部分找不到元素(Javascript)

时间:2017-07-25 05:07:02

标签: javascript python html selenium

我是Python新手中的selenium。我试图从其网站https://my.morrisons.com/storefinder/8获取超市(商店/加油站/药房/咖啡馆)每个部分的营业时间。信息仅在选择(展开)每个部分时显示。

我看到Chrome开发者工具中提供了详细信息,但我无法使用Beautifulsoup或urllib解析它们。我不确定是不是因为它是由Javascript动态生成的。

我做了一些研究并尝试使用不同方法的selenium,例如find_element_by_xpath和find_element_by_link,但是,它们都不能帮我找到那些折叠部分或实际的开放时间信息。

有人可以就如何解决这个问题给我一些指导吗?非常感谢你。

1 个答案:

答案 0 :(得分:-1)

使用Selenium,您应该等待页面加载,然后找到面板并单击它并抓住时间。 在JS上这个代码对我有用(假设浏览器是selenium web驱动程序并且加载了请求的页面)

await browser.wait(until.elementLocated(By.css('.according-markers.ng-scope')));
var panels = await browser.findElements(By.css('.according-markers.ng-scope'));
for(let panel of panels){
    await panel.findElement(By.css('a')).click();
    let hoursEl = await panel.findElements(By.css('span.ng-binding'));
    let hours = await Promise.all(hoursEl.map(function(el) { return el.getText()}));
    console.log(hours);
}