我试图写一个解析器以单击网站上的一个按钮,但我不能单击其中两个按钮。
我想点击“ Elija el imports a financiar”和“ Elija la mensualidad”
以下是html:https://www.cofidis.es/es/creditos-prestamos/prestamo-personal.html
python代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--start-maximized')
webdriver = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
url = "https://www.cofidis.es/es/creditos-prestamos/prestamo-personal.html"
webdriver.get(url)
targetSliderStep = 6.000
targetSliderStep = round(targetSliderStep * 2) / 2 # to ensure is units covered by clicking
print('target: ' + "{0:.3f}".format(targetSliderStep))
webdriver.find_element_by_xpath('//*[@id="btncerrar"]').click()
actualSliderStep = float(webdriver.find_element_by_id('I2:simuPanel.O').text.replace(' €',''))
print(actualSliderStep)
webdriver.find_element_by_xpath('//*[@id="I2:simuPanel.mensMoreId"]').click()
webdriver.find_element_by_xpath('//*[@id="I2:simuPanel.mensLessId"]').click()
print(actualSliderStep)
webdriver.find_element_by_xpath('//*[@id="I2:simuPanel.mensMoreId"]').click()
webdriver.find_element_by_xpath('//*[@id="I2:simuPanel.mensLessId"]').click()
print(webdriver.find_element_by_id('I2:simuPanel.O7').text)
webdriver.find_element_by_xpath('//*[@id="I2:simuPanel.durMoreId"]').click()
webdriver.find_element_by_xpath('//*[@id="I2:simuPanel.durLessId"]').click()
print(webdriver.find_element_by_id('I2:simuPanel.O7').text)
我收到此错误。
ElementNotVisibleException: Message: element not interactable
答案 0 :(得分:0)
我可以看到您的Xpath是正确的,但是它不能交互。 请尝试应该起作用的动作链。当您在chrome选项下添加此代码时,代码也可以正常运行。
chrome_options.add_argument('window-size=2560x1440')
代替这个
webdriver.find_element_by_xpath('//*[@id="I2:simuPanel.mensMoreId"]').click()
请尝试
el=webdriver.find_element_by_xpath('//*[@id="I2:simuPanel.amountMoreId"]')
ActionChains(webdriver).move_to_element(el).click(el).perform()
以这种方式更改所有四个滑动按钮的单击选项。让我知道是否可行。