Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在分页中单击arrow元素,该元素会引发WebDriverWait中不可见的元素_Python_Selenium_Selenium Webdriver_Xpath_Webdriverwait - Fatal编程技术网

Python 如何在分页中单击arrow元素,该元素会引发WebDriverWait中不可见的元素

Python 如何在分页中单击arrow元素,该元素会引发WebDriverWait中不可见的元素,python,selenium,selenium-webdriver,xpath,webdriverwait,Python,Selenium,Selenium Webdriver,Xpath,Webdriverwait,我尝试单击此网页上的下一页链接: 在您键入伦敦、曼彻斯特或其他地方之前,此页面将为空: 源代码如下所示: <nav class="visible-xs-block"> <ul class="pager"> <li> <a data-page="2" href="https://www.kumon.co

我尝试单击此网页上的下一页链接: 在您键入伦敦、曼彻斯特或其他地方之前,此页面将为空:

源代码如下所示:

<nav class="visible-xs-block">
             <ul class="pager">

                                        <li>
                        <a data-page="2" href="https://www.kumon.co.uk/find-a-tutor/?centre_search=london&page=2"><small><i class="fa fa-chevron-right"></i></small></a>
                    </li>

            </ul>
        </nav>
错误:

二审:

WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.XPATH, "//*[@class='fa fa-chevron-right']/../.."[2]))).click()
错误:

重要的是,我找不到关于第二条错误消息的任何文档,这就是我在stackoverflow上发布第一条消息的原因:

仅供参考,当我移除点击时,元素已很好地本地化,因此这是看起来很糟糕的点击:/

我发现了这个处理Javascript的解决方案,这对我来说可能很酷,但我真的不知道如何实现它=>

你觉得怎么样

你有什么办法帮我吗?我在这个问题上纠缠了两天,不幸的是:

编辑:

这个片段:

while browser.find_element_by_xpath("//ul[@class='pagination']//li[last()]/a/small"):
        action = ActionChains(browser)
        search_button = WebDriverWait(browser, 20).until(
                EC.element_to_be_clickable((By.XPATH, "//ul[@class='pagination']//li[last()]/a/small")))
        action.move_to_element(search_button)
        sleep(1)
        search_button.click()
引发错误selenium.common.exceptions.StaleElementReferenceException:消息:stale元素引用:元素未附加到页面文档

我不确定使用try…except是解决这个问题的最好方法,是吗

先谢谢你, Nicolas。

要调用,请单击>图标移动到下一页,您需要引导WebDriverWait使所需元素可单击,并且您可以使用以下解决方案:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='pagination']//li[last()]/a/small"))).click()
注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

看起来使用的xpath不正确。在浏览器控制台中交叉检查xpath很好。上面答案@DebanjanB中提供的xpath很好。尝试一次:在chrome->F12->控制台中:粘贴到一个下方并输入

  $x("//ul[@class='pagination']//li[last()]/a/small") 
它必须获取所需的元素。同样,请尝试您在发布的问题中使用的所有XPath,它们获取了错误的元素,这会导致执行时出现异常

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='pagination']//li[last()]/a/small"))).click()
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
  $x("//ul[@class='pagination']//li[last()]/a/small")