【问题标题】:How to locate the textbox using selenium-webdriver in python如何在 python 中使用 selenium-webdriver 定位文本框
【发布时间】:2019-04-26 19:53:22
【问题描述】:

这是文本框的代码:

<form>
    <input autocomplete="off" id="number" name="number" type="tel" aria-describedby="error-for-number tooltip-for-number" data-current-field="number" data-fillr-id="424069765" data-fillr="bound" style="padding: 8px 10px; font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, &quot;San Francisco&quot;, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, sans-serif;">
</form>

顺便说一句,当我尝试通过 id 或这样的名称访问它时它不起作用:

browser.find_element_by_id('number')
browser.find_element_by_name('number')

【问题讨论】:

  • 如果您不想知道元素的类型,那么您将如何确定它是按钮还是文本框?
  • 您应该使用一个获取这两个元素的选择器进行公共映射,然后尝试使用 element.Clear() 来检查它是否是输入(文本框),如果不是,则会出现异常被退回。您可以捕获该异常并改为单击该元素,如果 clear 没有引发异常,则只需键入您想要的文本。
  • 当你尝试通过 id 找到它时它会显示什么错误?

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

要定位 TextBox,您必须为 element_to_be_clickable() 诱导 WebDriverWait,您可以使用以下任一 Locator Strategies

  • 使用CSS_SELECTOR

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#number[name='number'][type='tel']")))
    
  • 使用XPATH

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='number' and @name='number'][@type='tel']")))
    
  • 注意:您必须添加以下导入:

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

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 1970-01-01
    • 2019-12-25
    • 2014-01-26
    • 2013-05-05
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2021-04-12
    相关资源
    最近更新 更多