我试图通过SeleniumPython选择输入框,但每次重新加载页面时,元素中的id都会更改 [英] Trying to select an input box through selenium python but the 'id' in the element changes every time I reload the page

查看:0
本文介绍了我试图通过SeleniumPython选择输入框,但每次重新加载页面时,元素中的id都会更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

HTML:

<input id="4432e17d-eed6-4620-9bb4-d75ffbd321fa" type="email" placeholder="Email address" value="" name="emailAddress" data-componentname="emailAddress" autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false">

已刷新:

<input id="4a463943-7f58-42ea-9317-ba9f9518811e" type="email" placeholder="Email address" value="" name="emailAddress" data-componentname="emailAddress" autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false">

如何在不使用ID的情况下选择此元素。

我尝试了XPath和css选择器,但都不起作用。 完整的XPath:

/html/body/div[2]/div[3]/div[5]/form/div[1]/input

XPath:

//*[@id="4a463943-7f58-42ea-9317-ba9f9518811e" except the ID changes. 

有帮助吗?

推荐答案

要将字符序列发送到电子邮件地址字段,您可以使用以下Locator Strategies之一:

  • 使用css_selector

    driver.find_element(By.CSS_SELECTOR, "input[name='emailAddress'][data-componentname='emailAddress']").send_keys("sebtheoo@stackoverflow.com")
    
  • 使用xpath

    driver.find_element(By.XPATH, "//input[@name='emailAddress' and @data-componentname='emailAddress']").send_keys("sebtheoo@stackoverflow.com")
    

所需元素是动态元素,因此理想情况下,要将字符序列发送到需要为element_to_be_clickable()诱导WebDriverWait的元素,可以使用以下Locator Strategies之一:

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='emailAddress'][data-componentname='emailAddress']"))).send_keys("sebtheoo@stackoverflow.com")
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='emailAddress' and @data-componentname='emailAddress']"))).send_keys("sebtheoo@stackoverflow.com")
    
  • 注意:您必须添加以下导入:

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

这篇关于我试图通过SeleniumPython选择输入框,但每次重新加载页面时,元素中的id都会更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆