我无法使用 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 element是 ReactJS启用元素,以便在元素中发送字符序列,您必须为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/