【问题标题】:How to click the button as per the html using Selenium and Python如何使用 Selenium 和 Python 根据 html 单击按钮
【发布时间】:2018-09-08 08:41:34
【问题描述】:

我正在学习 Selenium 并尝试单击 GO 按钮: https://speedtest.telstra.com/

<button class="button background-primary-hover text-primary" aria-label="start your speedtest">
<span style="font-size: unset; overflow-wrap: unset;">GO</span></button>

点击该按钮的所有可能的 Selenium 方法是什么, elem = driver.find_element_by_....???

我也想看看我发现了什么,那么应该使用print(elem.text) 吗?

【问题讨论】:

    标签: python selenium selenium-webdriver webdriver webdriverwait


    【解决方案1】:

    根据网站https://speedtest.telstra.com/,所需元素位于&lt;iframe&gt; 内,因此您需要诱导WebDriverWait 切换到&lt;iframe&gt;,然后寻找该元素,您可以使用以下解决方案:

    • 使用XPATH

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@class='speed-test' and @src='//telstra-nbn.speedtestcustom.com']")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='button background-primary-hover text-primary']/span[contains(.,'GO')]"))).click()
      
    • 使用CSS_SELECTOR

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"//iframe.speed-test[src*='speedtestcustom']")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.button.background-primary-hover.text-primary[aria-label='start your speedtest']>span"))).click()
      

    注意:您必须添加以下导入:

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

    【讨论】:

    • 我已经为这个解决方案研究了 2 个小时。我希望我能找到它,但感谢你照亮了我。我不知道WebDriverWait 这个效率高。我从这个答案中学到了很多东西。谢谢。
    • 谢谢,通过 XPATH 找到可点击的。我将如何使用类名或 CSS 选择器?
    • @user3013157 查看我更新的答案,让我知道状态。
    • @新贡献者,哦,太感谢了,我现在明白了:)
    【解决方案2】:

    你必须使用xpath,有xpath chrome的帮助工具。你可以安装它。

    button = driver.find_element_by_xpath("your xpath")
    
    button.click()
    

    【讨论】:

    • 框架中没有通过xpath点击的选项。
    【解决方案3】:

    试试这个:

    browser.find_element_by_class_name("button background-primary-hover text-primary").click()
    

    因为它会选择元素并点击它。

    【讨论】:

      猜你喜欢
      • 2018-12-17
      • 2019-01-20
      • 2018-08-22
      • 2019-09-01
      • 2019-01-31
      • 2016-12-31
      • 2021-04-07
      • 2019-09-16
      • 2018-04-30
      相关资源
      最近更新 更多