【问题标题】:Selinium change input value of placeholderSelenium 改变占位符的输入值
【发布时间】:2021-03-01 06:40:25
【问题描述】:

您好,我正在尝试使用 sendkey 命令发送输入值,但它没有改变。

HTML:

<div class="SimpleAutocomplete_autocompleteContent AutocompleteOverrides_autocompleteContent SimpleAutocomplete_opened AutocompleteOverrides_opened"><div class="SimpleAutocomplete_selectedWords AutocompleteOverrides_selectedWords"><input placeholder="" required="" value=""></div></div>

我试过了:

text = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='SimpleAutocomplete_autocompleteContent AutocompleteOverrides_autocompleteContent']"))).sendkeys("aa")

text = driver.find_element_by_id("placeholder").send_keys("aa")

全部失败

屏幕的sn-ps:

【问题讨论】:

  • 目标是输入而不是 div。
  • 注意详细说明。在那?我试过:#text = driver.find_element_by_id("placeholder").send_keys("aa") text = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@value= '']"))).sendKeys("value", "aa") 等缩写

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

以输入标签而不是 div 为目标。

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.SimpleAutocomplete_selectedWords.AutocompleteOverrides_selectedWords>input"))).sendKeys("aaa")

【讨论】:

    【解决方案2】:

    您不会更改占位符的值,而是将 字符序列 发送到替换占位符文本的 &lt;input&gt; 标记。

    要向元素发送字符序列,您必须为element_to_be_clickable() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.SimpleAutocomplete_autocompleteContent.AutocompleteOverrides_autocompleteContent.SimpleAutocomplete_opened.AutocompleteOverrides_opened > div.SimpleAutocomplete_selectedWords.AutocompleteOverrides_selectedWords > input"))).send_keys("Djinn")
      
    • 使用XPATH

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='SimpleAutocomplete_autocompleteContent AutocompleteOverrides_autocompleteContent SimpleAutocomplete_opened AutocompleteOverrides_opened']/div[@class='SimpleAutocomplete_selectedWords AutocompleteOverrides_selectedWords']/input"))).send_keys("Djinn")
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

      猜你喜欢
      • 2018-02-09
      • 1970-01-01
      • 2021-05-08
      • 2015-09-20
      • 2013-07-16
      • 2013-11-22
      • 2018-04-12
      • 2021-06-15
      • 1970-01-01
      相关资源
      最近更新 更多