【问题标题】:function click with selenium without id没有id的硒功能点击
【发布时间】:2022-01-09 16:16:49
【问题描述】:

我想知道如何使用 selenium 单击此页面中的按钮 here 我尝试的代码是这样的

import selenium 
from selenium import webdriver
from time import sleep
PATH= "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://yopmail.com/it/")
inputsSI= driver.find_element_by_class_name("md").click()
print(inputsSI)
sleep(100)
driver.close()

我得到的错误是这样的:

消息:元素不可交互

【问题讨论】:

    标签: python selenium web-scraping


    【解决方案1】:

    这是因为find_element_* 方法将返回他们找到的元素的第一次出现。如果您看到 HTML 页面,在具有此 "md" 类的按钮之前还有另一个 div 元素,当然它不是您要查找的按钮。

    你正在寻找这个按钮:

    <div id="refreshbut">
        <button class="md" style="border-radius: 20px;"
                title="Controllare la posta @yopmail.com"
                onclick="{if(chkl())go()}"><i
                class="material-icons-outlined f36">&#xe5c8;</i></button>
        <input type="submit" style="display:none;">
    </div>
    

    它被包裹在一个id为"refreshbut"的div中。

    所以你要做的就是首先通过 id 获取这个 div。然后搜索具有"md" 类的元素,这确实是您正在寻找的按钮。 (您也可以使用 XPATH 获取按钮。这取决于您)

    喜欢:

    inputsSI = driver.find_element(By.ID, "refreshbut") \
        .find_element(By.CLASS_NAME, "md") \
        .click()
    

    注意 1:最好为 PATH 变量使用原始字符串。

    注意 2:我会将 driver.close() 语句放在 finally 块内,以便它始终运行

    【讨论】:

    • 你能写给我吗?我必须插入的代码就像 DivButton=driver.find_element_by_id(refreshbut).click 我不明白我怎么写它
    • @oneperson 更新
    • @oneperson 如果解决了您的问题,请告诉我
    【解决方案2】:

    要单击 md 按钮,请使用 button.md 作为选择器,然后等待元素可交互。我不知道里面有什么,所以我只是添加了一个发送密钥。

    wait=WebDriverWait(driver,30)                                 
    driver.get("https://yopmail.com/it/")
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#login"))).send_keys('a')
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button.md"))).click()
    

    进口:

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

    【讨论】:

      猜你喜欢
      • 2019-01-30
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 2020-03-20
      相关资源
      最近更新 更多