无法使用Selenium Python找到信用卡号的元素

时间:2019-01-03 22:31:17

标签: python python-2.7 selenium selenium-webdriver webdriverwait

我正在通过在python中使用硒来在输入字段中输入信息。 我尝试访问的元素是

<input type="tel" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" class="number" data-braintree-name="number" name="credit-card-number" id="credit-card-number" maxlength="22" placeholder="•••• •••• •••• ••••" aria-describedby="field-description-number" style="background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAfBJREFUWAntVk1OwkAUZkoDKza4Utm61iP0AqyIDXahN2BjwiHYGU+gizap4QDuegWN7lyCbMSlCQjU7yO0TOlAi6GwgJc0fT/fzPfmzet0crmD7HsFBAvQbrcrw+Gw5fu+AfOYvgylJ4TwCoVCs1ardYTruqfj8fgV5OUMSVVT93VdP9dAzpVvm5wJHZFbg2LQ2pEYOlZ/oiDvwNcsFoseY4PBwMCrhaeCJyKWZU37KOJcYdi27QdhcuuBIb073BvTNL8ln4NeeR6NRi/wxZKQcGurQs5oNhqLshzVTMBewW/LMU3TTNlO0ieTiStjYhUIyi6DAp0xbEdgTt+LE0aCKQw24U4llsCs4ZRJrYopB6RwqnpA1YQ5NGFZ1YQ41Z5S8IQQdP5laEBRJcD4Vj5DEsW2gE6s6g3d/YP/g+BDnT7GNi2qCjTwGd6riBzHaaCEd3Js01vwCPIbmWBRx1nwAN/1ov+/drgFWIlfKpVukyYihtgkXNp4mABK+1GtVr+SBhJDbBIubVw+Cd/TDgKO2DPiN3YUo6y/nDCNEIsqTKH1en2tcwA9FKEItyDi3aIh8Gl1sRrVnSDzNFDJT1bAy5xpOYGn5fP5JuL95ZjMIn1ya7j5dPGfv0A5eAnpZUY3n5jXcoec5J67D9q+VuAPM47D3XaSeL4AAAAASUVORK5CYII=&quot;); background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; cursor: auto;" aria-invalid="true">

我尝试过 通过Xpath查找

driver.find_element_by_xpath("//input[@id='credit-card-number']").send_keys(creditcardnumber)

按名称查找

driver.find_element_by_name("credit-card-number").send_keys(creditcardnumber)

按ID查找

driver.find_element_by_id('credit-card-number').send_keys(creditcardnumber)

我需要定位输入元素的帮助。出现错误

Unable to locate the element

更新

这里是URL供参考。

2 个答案:

答案 0 :(得分:2)

当您尝试在<input>字段中发送字符序列时,将其作为信用卡号,而历史上信用卡号位于{{ 1}}。

因此,如果所需元素位于<iframes>之内,那么您必须:

  • 诱导 WebDriverWait 以使所需的框架可用并切换到它。
  • 诱导 WebDriverWait 以使所需的元素可点击
  • 您可以使用以下解决方案:

    <iframe>
  • 浏览器快照

credit-card-number

答案 1 :(得分:0)

错误消息

  

无法找到元素

通常是因为javascript生成的元素,所以请使用WebDriverWait

inputCC = WebDriverWait(driver, 15).until(
    lambda driver: driver.find_element_by_xpath("//input[@id='credit-card-number']")
)
inputCC.send_keys(creditcardnumber)

另一种可能性是位于iframe

中的元素