我正在构建一个库存检查器,需要在https://www.argos.co.uk/basket上的文本框中输入一个邮政编码,但似乎遇到了一个隐藏元素,普通的 sendkeys 方法返回一个 ElementNotInteractableException 。因此,我尝试将 execute_script 与 setAttribute 一起使用,它运行时没有错误,但仍然没有填充文本框。
from selenium import webdriver as wd
import chromedriver_binary
wd = wd.Chrome()
wd.implicitly_wait(5)
wd.get("https://www.argos.co.uk/search/ps5/category:824671/")
accept_cookies = wd.find_element_by_xpath('//*[@id="consent_prompt_submit"]')
accept_cookies.click()
add_to_cart_button = wd.find_element_by_xpath('//*[@id="findability"]/div/div[7]/div/div[5]/div[5]/div[3]/div/div/div[2]/button')
add_to_cart_button.click()
reject_insurance = wd.find_element_by_xpath('//*[@id="findability"]/div/div[3]/div/div/div[1]/footer/div/div/a')
reject_insurance.click()
wd.execute_script('document.querySelector("#basket-FulfilmentSelectorForm").setAttribute("value", "ABC123")')
有趣的是,“delivery”按钮元素可以按如下方式进行交互:
wd.execute_script('document.querySelector("#basket-FulfilmentSelectorForm-deliverButton").click()')
任何帮助是极大的赞赏。