我正尝试在批发商网站上抓取特定产品的价格以及相应的价格以更新我们的库存清单,但无法搜索商品,因为它不允许我通过我的代码自动填充文本框。在检查元素时,它显然在那里。我使用了下面介绍的各种方法,但没有用。
任何帮助将不胜感激。谢谢!
给出html元素:
<input class="keyword" style="border: 1px solid; width: 125px;" accesskey="S" type="text" name="keyword" id="keyword" maxlength="14" size="12" title="Keyword" value="" onkeyup="return keywordMouseDown(event);" onfocus="this.select();">
我用过:
searchItem = driver.find_element_by_xpath("//*[@type='text']").send_keys("test")
searchItem = driver.find_element_by_xpath("//*[@name='keyword']").send_keys("test")
searchItem = driver.find_element_by_id("keyword").send_keys("test")
searchItem = driver.find_element_by_name("keyword").send_keys("test")
所有这些元素均未显示任何此类元素:无法定位元素错误
我还尝试使用其他声明的方法,以防它在弹出广告被关闭之前不会加载,但也没有运气,可以使用以下代码:
element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_name("keyword"))
try:
myElem = WebDriverWait(driver, 6).until(EC.presence_of_element_located((By.ID, 'keyword')))
print ("Page is ready!")
except TimeoutException:
print ("Loading took too much time!")
这两种方法都只是超时了。
我知道我可能进口了太多东西,但是一旦我在最终清理过程中完成了该项目,这些东西就会被清除。到目前为止,一切都按预期进行,直到最后一行。
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
#def initiate(): # initialize webpage
driver = webdriver.Chrome() # opening browser
driver.get("http://kinray.com") # go to site
driver.implicitly_wait(10) # wait for page to finish loading
username = driver.find_element_by_xpath("//*[@type='text']").send_keys("username")
password = driver.find_element_by_xpath("//input[@type='password']").send_keys("password")
submitUP = driver.find_element_by_xpath("//input[@type='image']").send_keys(Keys.ENTER)
time.sleep(2)
for i in range(4): # close popups
driver.execute_script("modalX();")
print("closed popup")
time.sleep(.25)
searchBar = driver.find_element_by_xpath("//*[@type='text']").send_keys("test")
生成的不是超时错误的错误是:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@type='text']"}
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@name='keyword']"}