我试图从这个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
答案 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()