Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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 需要使用硒的帮助吗_Python_Selenium - Fatal编程技术网

Python 需要使用硒的帮助吗

Python 需要使用硒的帮助吗,python,selenium,Python,Selenium,我想去这个网站: 然后单击“Tabella”选项卡 然后查看表格的第二页(共64页) 然而,我在第一部分失败了,我无法编写代码来单击“Tabella”选项卡 下面是我用来搜索的html代码: <li id="Tabella" class="Table_img ui-state-default ui-corner-top ui-tabs-selected ui-state-active"> <span id=

我想去这个网站: 然后单击“Tabella”选项卡 然后查看表格的第二页(共64页) 然而,我在第一部分失败了,我无法编写代码来单击“Tabella”选项卡

下面是我用来搜索的html代码:

<li id="Tabella" class="Table_img ui-state-default ui-corner-top ui-tabs-selected ui-state-active">
                <span id="span_table_img" class="span_img"></span>
            <a href="#ui-tabs-1" rel="nofollow">Tabella</a>         </li>

  • 谢谢大家

    在访问表元素之前添加时间睡眠

    time.sleep(5)
    driver.find_element_by_id('Tabella').click()
    

    要单击
    Tabella
    选项卡,您需要导入
    WebDriverWait
    (),并等待
    元素可单击
    (),您可以使用以下定位器

    链接文本:

    driver.get("http://www.datiopen.it/it/opendata/Mappa_delle_stazioni_ferroviarie_in_Italia")    
    WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.LINK_TEXT,"Tabella"))).click()
    
    XPATH

    driver.get("http://www.datiopen.it/it/opendata/Mappa_delle_stazioni_ferroviarie_in_Italia")    
    WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[text()='Tabella']"))).click()
    
    您需要导入以下库

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

    代码有问题

    driver = webdriver.Chrome()
    driver.get('http://www.datiopen.it/it/opendata/Mappa_delle_stazioni_ferroviarie_in_Italia')
    
    
    def wait_for_element_to_be_clickable(element):
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, element)))
    
    wait_for_element_to_be_clickable("Tabella")
    element = driver.find_element_by_id("Tabella")
    element.click()
    print("executed")
    
    您试图在元素可用/准备在DOM中单击之前单击该元素

    解决方案

    您需要等待该元素加载并成为可单击的,以便对同一元素执行任何类型的操作

    time.sleep(5)
    driver.find_element_by_id('Tabella').click()
    
    代码

    driver = webdriver.Chrome()
    driver.get('http://www.datiopen.it/it/opendata/Mappa_delle_stazioni_ferroviarie_in_Italia')
    
    
    def wait_for_element_to_be_clickable(element):
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, element)))
    
    wait_for_element_to_be_clickable("Tabella")
    element = driver.find_element_by_id("Tabella")
    element.click()
    print("executed")
    

    def wait_等待元素可点击(元素):
    此方法将等待任何元素可点击后再继续。(您可以根据页面加载时间增加时间)。

    有什么错误?@Wups我将其更改为
    element=driver。通过xpath(“a[@href=”#ui-tabs-1'])查找元素
    仍然不起作用。错误是:
    elementnotinteractivatableexception:element不可交互(会话信息:chrome=85.0.4183.102)
    谢谢,但是真的需要使用这么多库吗?我的意思是这是一个非常简单的问题task@MarkBils:
    WebDriverWait()
    是与浏览器交互时的最佳实践。这将帮助您解决浏览器同步问题,您可以解决
    elementnotinteractiableexception
    之类的问题,并且没有此类元素异常。它工作得非常好!你能告诉我这是什么逻辑吗?@Mark Bils的逻辑是,selenium在加载页面时尝试访问元素,但某些元素仍在进行中,这就是为什么它们不存在于页面的DOM中。您可以使用
    time.sleep
    WebDriverWait
    让它们完全加载。