当前位置: 首页 > 知识库问答 >
问题:

使用python和selenium替换网页上的占位符文本?

子车新立
2023-03-14

要替换文本的元素:

我尝试了各种方法(我所能想到的就是谷歌),来替换占位符文本。后来出现了很多错误,我想,因为焦点已经在文本框中(我想输入文本的地方可能是send_keys)。它不起作用。有人能帮我解释一下这个概念,或者指出我可能在哪里读到了我的错误吗?

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

chrome_path = r"C:\Users\-------\Desktop\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get("SAMPLE WEBSITE URL")  #sorry had to remove the link :(
driver.maximize_window()

action = webdriver.ActionChains(driver)
elm = driver.find_element_by_id("user_sign_in").click()

inputElement = driver.find_element_by_xpath('//*[@id="lfm"]/div[1]/div[2]')     #driver.find_elements_by_xpath("//*[contains(text(), 'Enter your Mobile Number')]")     
#driver.find_element_by_id("mobile")
inputElement.send_keys('1234567890')
inputElement.submit()


#//*[@id="lfm"]/div[1]/div[2] xpath id for the mobile number element
#code below this is not working, for move mouse
#action = webdriver.ActionChains(driver)
#action.move_to_element((By.XPATH, '//*[@id="user_sign_in"]')).perform()



#For moving the mouse to sign in: Tried the ones below and they didn't work either
#driver.move_to_element(By.XPATH, '//*[@id="user_sign_in"]')
#login_menu = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="user_sign_in"]')))
#ActionChains(driver).move_to_element(sign_in).perform()

错误:

回溯(最近一次调用last):inputElement中第16行的文件“C:/Python34/Selenium 2nd Trial.py”。发送密钥(“9810307369”)文件“C:\Python34\lib\site packages\selenium\webdriver\remote\webelement.py”,第322行,在发送密钥中_执行(Command.SEND_KEYS_TO_ELEMENT,{'value':KEYS_TO_typing(value)})文件“C:\Python34\lib\site packages\selenium\webdriver\remote\webelement.py”,第457行,在_executereturn self中_父母亲执行(命令,参数)文件“C:\Python34\lib\site packages\selenium\webdriver\remote\webdriver.py”,第233行,执行self。错误处理程序。在check\u response raise exception\u class(message,screen,stacktrace)Seleniu中的第194行检查响应(response)文件“C:\Python34\lib\site packages\selenium\webdriver\remote\errorhandler.py”。常见的例外情况。WebDriverException:消息:未知错误:无法聚焦元素(会话信息:chrome=55.0.2883.87)(驱动程序信息:chromedriver=2.27.440174(E97A72CAAFC2D3A8B807EE115BFB307F7D2CFD9),平台=Windows NT 10.0.14393 x86_64)


共有1个答案

萧晔
2023-03-14

您正试图向div元素发送键,但打算使用输入元素:

inputElement = driver.find_element_by_id('email')   
inputElement.send_keys('1234567890')
inputElement.submit()

而且,请注意,页面可能需要一些时间才能加载,并且可能会有视觉效果阻止元素被定位或可交互。如果是这种情况,请在适当的预期条件下使用WebDriverWait,以确保元素可见。

 类似资料:
  • 问题内容: 对于我的项目,我需要将有向图转换为图的张量流实现,就好像它是神经网络一样。在tensorflow版本1中,我可以将所有输入定义为占位符,然后使用广度优先搜索图为输出生成数据流图。然后,我只需使用feed_dict来输入我的输入。但是,在TensorFlow v2.0中,他们决定完全放弃占位符。 如何在不使用占位符的情况下为每个接受可变数量的输入并返回可变数量的输出的图制作tf.func

  • 下面的javascript代码来自这个问题的答案,非常适合替换网页上的文本。在Safari和Chrome中使用javascript控制台都取得了成功的结果。 但是,当我将其保存为替换_文本时。js并尝试使用Applescript运行它,在Safari和Chrome中都会返回缺少的值 我也尝试运行javascript直接从Script编辑器中的告诉块,转义引号和转义后,而不是使用replace_te

  • 我的问题的背景是,我试图本地化一些HTML文件,但我不想为每种语言拥有完整的HTML副本,我只想“以Android的方式”做到这一点,并在我的HTML中使用本地化字符串资源。 假设我在一个字符串中有一些HTML,在将HTML发送到WebView之前,应该用字符串资源替换占位符--我如何做到这一点? 和这些字符串资源: 现在,举一个简单的例子,我可以使用string.replace(),但是如果我想

  • 我一直在尝试通过FieldMailMerge和VariableReplace示例,但似乎无法运行本地测试用例。我基本上试图从一个docx模板文档开始,并让它从一个模板创建x个docx文档,替换变量。 在下面的代码中,试图替换单个变量,但失败了。模板文件中的${}值作为处理的一部分被移除,因此我认为它正在查找它们,而不是出于某种原因替换它们。我明白这可能是由于格式问题,正如示例代码的注释中所解释的那

  • 问题内容: 使用pysqlite我正在制定一个程序来处理一些数据。对多个表和列中的相似字段执行相同类型的操作,因此我认为我可以参数化sql语句,如下所示: 我得到的错误不是很有帮助(),但我明白了:Pysqlite不赞赏以这种方式使用占位符。 谁能指出正在发生的事情以及执行上述操作的正确方法? 问题答案: 您根本不能将占位符用于列或表名。我对此没有权威的引用-我只是从尝试过和失败中“知道”这一点。

  • 问题内容: 我的字符串看起来像这样:“您可以在[开始日期+ 30]之前使用促销。” 我需要将占位符替换为实际日期- 这是销售的开始日期加上30天(或其他任何数字)。也可以单独显示而无需添加数字。同样,占位符内的所有多余空格都应被忽略,并且不要使替换失败。 用Java做到这一点的最佳方法是什么?我正在考虑用于查找占位符的正则表达式,但不确定如何执行解析部分。如果只是[开始日期],我将使用该方法,但由