【问题标题】:Selenium Dynamic Element PythonSelenium 动态元素 Python
【发布时间】:2020-05-06 17:16:15
【问题描述】:

您好,我正在使用硒。我必须向这个输入发送密钥。

<input id="209f0c3d-3222-4caa-b55d-1d4463322fd4" type="email" placeholder="E-posta adresi" value="" name="emailAddress" data-componentname="emailAddress" autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false">

<input id="8ccf12d3-e264-43b8-8bbe-70e1f3eef202" type="email" placeholder="E-posta adresi" value="" name="emailAddress" data-componentname="emailAddress" autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false">

例如每次刷新,输入 id 都会发生变化。如何用硒找到这个元素

【问题讨论】:

    标签: python python-3.x selenium selenium-webdriver


    【解决方案1】:

    你可以通过 xpath 找到它们

    即:

    <html>
     <body>
      <form id="loginForm">
    </body>
    <html>
    

    你可以通过:

    login_form = driver.find_element_by_xpath("/html/body/form[1]")
    

    这里的数字 1 表示它是第一种形式。 在您的情况下,如果您知道可以使用以下形式的表格(只需更改数字以匹配您的数字。即,如果它是第 4 个输入,则将值更改为 4)

    driver.find_element_by_xpath("//form[1]/input[1]")
    

    另一种选择是在名称、类型和其他一些属性不变的情况下,您可以使用(链接它们以使其指向唯一元素):

    driver.find_element_by_xpath("//input[@name='emailAddress'][@type='email']")
    

    要验证 xpath 是否可以工作,请尝试 web 检查器中的搜索框,它接受 xpath,如果找到您的元素,那么它也可以在 python 中工作。

    更多方法请参考https://selenium-python.readthedocs.io/locating-elements.html

    【讨论】:

      【解决方案2】:

      您可以使用 xpath kr css 定位元素,其中 id 或类名不是唯一的。

      driver.find_element_by_xpath("//input[@name='emailAddress']")
      

      或者

      driver.find_element_by_name('emailAddress')
      

      或者

      driver.find_element_by_css_selector("input[name='emailAddress']")
      

      注意:如果属性组合是唯一的,您也可以进行链接:

      driver.find_element_by_xpath("//input[@name='emailAddress'][@type='email']")
      

      【讨论】:

        【解决方案3】:

        您对输入字段使用任何唯一选择器:type="email" placeholder="E-posta adresi" value="" name="emailAddress" data-componentname="emailAddress"

        xpath:

        driver.find_element_by_xpath("//input[@name='emailAddress' and contains(@placeholder, 'E-posta adresi']")
        

        css:

        driver.find_element_by_css_selector("input[name='emailAddress'][type='email']")
        

        【讨论】:

          猜你喜欢
          • 2020-03-09
          • 2020-06-21
          • 1970-01-01
          • 2020-10-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-20
          • 1970-01-01
          相关资源
          最近更新 更多