【问题标题】:Python, Selenium - can't locate a webpage element (button) with ID 'next'Python,Selenium - 无法找到 ID 为“next”的网页元素(按钮)
【发布时间】:2019-03-12 04:51:31
【问题描述】:

我开始使用 selenium 学习 python 来自动化我的一些任务。我有一个无法解决的问题。
我正在尝试创建一个会自动单击“下一步”按钮的脚本。 我找不到 ID 为“下一步”的网页元素(按钮)。我尝试了所有可能的解决方案 - 通过 ID、通过 xpath 等。
我试图在其中查找元素的网页部分可能是由 jquery 动态生成的。
这是我得到的错误:

无法定位元素:[id="next"]

这是我到目前为止所做的事情(片段):

from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
import time
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

browser = webdriver.Firefox(executable_path=r'C:\Users\technik 
informatyk\Desktop\python\geckodriver.exe')

browser.get('https://it-szkola.edu.pl/usr')
browser.maximize_window()
browser.implicitly_wait(3)

zgoda = browser.find_element_by_xpath('//*[@id="cookieLayerBoxButton"]')
zgoda.click()

browser.implicitly_wait(10) 
emailElem = browser.find_element_by_id('login-box-field-input')
emailElem.send_keys('mylogin')

passwordElem = browser.find_element_by_id('password')
passwordElem.send_keys('mypassword')
passwordElem.submit()
time.sleep(2)
aktualnosci = browser.find_element_by_id('hBLAkt').click()
grandtest = browser.find_element_by_xpath('//* [@id="New178"]/div[2]/div[1]/p[2]/a').click()
lista = browser.find_element_by_link_text('Lista testów').click()
test = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH,"/html/body/div[2]/div[1]/div[2]/table/tbody/tr[5]/td[5]/a"))).click()

#browser.refresh()
#time.sleep(2)
nastepne = browser.find_element_by_id("next")

#nastepne = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.LINK_TEXT, "Następne")))
#nastepne = browser.find_element_by_link_text('Następne').click()
nastepne.click()

截图 ,

,

,

,

,

您的帮助将不胜感激。

【问题讨论】:

  • 您可以在您的页面上上传 HTML 文本而不是屏幕截图吗?这将有助于故障排除。
  • 请检查按钮是否在 iframe 元素内?当您按下运行测试时,测试会在新窗口中打开吗?
  • @tomko Don't do this
  • @Jdoe 你确定这是id='next' 的唯一元素吗?我被类似的东西咬过。有时,出于某种原因,某些网站可能具有类似的结构重复很多次(javascript、css 技巧等),您会找到一些东西,但不是您要找的东西。试过用xpath吗?它是这样发现的吗?

标签: python selenium


【解决方案1】:

试试 xpath: browser.find_element_by_xpath('//button[@id="next"]')

尝试获取所有按钮:

btns = browser.find_elements_by_xpath('//button')
for btn in btns:
    txt = btn.text
    if txt == 'Następne':
         btn.click()

【讨论】:

    猜你喜欢
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2022-07-28
    • 1970-01-01
    • 2019-02-03
    • 2019-06-28
    相关资源
    最近更新 更多