首页 文章

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

提问于
浏览
0

我要替换文本的元素:

<input tabindex="1" style="padding-left:119px!important;width:318px!important;background-color:#fff;outline: none;box-sizing: inherit;" id="email" name="mobile" placeholder="Enter your Mobile Number" class="un_s un1_s" value="" onblur="remove_border();" type="text" maxlength="20">

我尝试了各种方法(我只能想到和谷歌),以取代 placeholder 文本 . 之后很多错误,我想,因为焦点已经在文本框中(我想输入文本可能只是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()

错误:

Traceback(最近一次调用最后一次):在inputElement.send_keys('9810307369')文件“C:\ Python34 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py“,第322行,在send_keys中self._execute(Command.SEND_KEYS_TO_ELEMENT,{'value':keys_to_typing(value)})文件”C:\ Python34 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py“,第457行,在_execute中返回self._parent.execute(command,params)文件”C:\ Python34 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py“,第233行,执行self.error_handler.check_response(响应)文件“C:\ Python34 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py”,第194行,在check_response中引发exception_class(message,screen,stacktrace)selenium . common.exceptions.WebDriverException:消息:未知错误:无法聚焦元素(会话信息:chrome = 55.0.2883.87)(驱动程序信息:chromedriver = 2.27.440174(e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform = Windows NT 10.0.14393 x86_64 )

1 回答

  • 0

    您正在尝试将密钥发送到 div 元素,但意味着使用 input 元素:

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

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

相关问题