元素不可见硒python

时间:2015-10-23 15:46:00

标签: python selenium

我试图从这个site中删除内容。要进入下一页,我尝试单击页面底部的下一页按钮。我还尝试通过下拉列表更改页面,但我收到错误Element not visible

我甚至尝试使用动作链来完成下一页:

 act = ActionChains(self.driver)
 select_text=act.move_to_element(self.driver.find_element_by_xpath("//div[@id='pagination-group']/select[@id='pagination-select']"))
 select_text.click().perform()
 time.sleep(4)
 option_text = self.driver.find_elements_by_xpath("//div[@id='pagination-group']/select[@id='pagination-select']/option")
 for o in option_text:
        if o.text in ('2','3','4','5','6'):
            o.click()

但我再次收到错误line 47, in parse if o.text in ('2','3','4','5','6'):' StaleElementReferenceException: Message: Element not found in the cache - perhaps the page has changed since it was looked up

3 个答案:

答案 0 :(得分:0)

您的初步方法, $("a",text:"Pagina successiva").click()可能是最好的。

这看起来很容易失败。也许这些链接是从JS生成的?尝试点击之前尝试在测试中添加睡眠,看看是否有帮助。

答案 1 :(得分:0)

Selenium Select为您提供了从下拉列表中获取options的方法。你可能想要利用它,而不是试图自己选择。

尝试,

selectElement = self.driver.find_element_by_css_selector("select#pagination-select")
options = Select(selectElement).options;

for o in options:
    if o.text in ('2','3','4','5','6'):
        o.click()

答案 2 :(得分:0)

问题是您要查找的链接在页面上存在两次。第一个实例隐藏在页面顶部。解决此问题的一种方法是找到仅存在于页面底部的容器元素。您可以使用此选择器单击所需的元素。我只是测试了它并且它有效。

driver.get("http://www.ospedaleuniverona.it/ecm/home/per-il-paziente/unita-operative")
self.driver.find_element_by_css_selector("#pagination-container-dest a[title='Pagina successiva']").click()