python - 如何使用 Selenium 在文本字段中插入值?

标签 python selenium selenium-webdriver

我无法使用 Selenium Python 在 html 公式中的字段文本中插入值:

我有这个 HTML:

<div data-react-toolbox="input" class="_2dBwA"><input type="text" placeholder="Endereço de e-mail" class="_2WvFs" role="input"><span class="fT1WI"></span></div>

还有这个 XPath:

(Copy Xpath) //*[@id="root"]/div/div[2]/div[2]/div/input

还有这个:

(Copy outerHTML) <input type="text" placeholder="Endereço de e-mail" class="_2WvFs" role="input">

我做到了,但没有成功:

[In]: login_name = 'Cassandra'
[In]: insert_login_name = driver.find_element_by_xpath('//input[@id="root"]')
[In]: insert_login_name.send_keys(login_name);

[Out]: NoSuchElementException:  Message: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@id="root"]"}

在此文本字段中输入文本后,结果将在 html 'values' = 'Cassandra' 中

<div data-react-toolbox="input" class="_2dBwA"><input type="text" placeholder="Endereço de e-mail" class="_2WvFs _3QmiH" role="input" value='Cassandra'><span class="fT1WI"></span></div>

我能做什么?我是新手。谢谢

最佳答案

desired elementReactJS启用元素,以便在元素中发送字符序列,您必须为element_to_be_clickable()引发WebDriverWait,并且您可以使用以下任一关注Locator Strategies :

  • 使用CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[data-react-toolbox='input']>input[placeholder='Endereço de e-mail'][type='text']"))).send_keys(login_name)
    
  • 使用XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@data-react-toolbox='input']/input[@placeholder='Endereço de e-mail' and @type='text']"))).send_keys(login_name)
    
  • 注意:您必须添加以下导入:

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

更新

似乎是区域设置问题。将 placeholder 属性的Endereço de e-mail 更改为电子邮件地址 效果非常好。

  • 使用CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[data-react-toolbox='input']>input[placeholder*='mail'][type='text']"))).send_keys(login_name)
    
  • 使用XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@data-react-toolbox='input']/input[contains(@placeholder, 'mail') and @type='text']"))).send_keys(login_name)
    

引用

您可以在以下位置找到相关的详细讨论:

关于python - 如何使用 Selenium 在文本字段中插入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59723725/

相关文章:

python - yield from asyncio.sleep 有效,但 yield from async def 失败

Selenium PHPUnit 在 ubuntu 命令行上传递变量

java - Selenium Webdriver (Java) ,需要将 "Space"keypress 发送到整个网站

python - 使用Selenium在html5视频中跳跃一定时间

javascript - 如何在网页中嵌入投票

python - 在特征向量中估算多个缺失值

python - 在机器之间传递变量的有效方法有哪些?

java - Selenium Webdriver(JAVA) 嵌套元素

java - 使用 selenium webdriver 关闭 webengage 或 clickdesk poup

javascript - 如何使用javascriptexecutor实现拖放?