python 尝试与HTML页面元素交互,但未找到任何元素

kokeuurv  于 2023-09-29  发布在  Python
关注(0)|答案(1)|浏览(111)

我尝试使用Selenium抓取网页,但是当我尝试传递按钮的XPath时,我得到一个错误,说这个元素不存在。我尝试了另一个网站,它工作得很好。我也试过使用Puppeteer,但遇到了同样的问题。当我在页面控制台中为我试图单击的按钮执行$('. selector')时,它返回一个对象x.fn.init [prevObject:x.fn.init(1)]。我不知道如何使用它来与元素本身交互,但我相信这个问题围绕着它。

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

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://senamhi.gob.bo/index.php/sysparametros')
open_window_elem = driver.find_element("xpath", '//*[@id="myModal"]/div/div/div')
action = ActionChains(driver)
action.move_by_offset(500, 200)    
action.click()
action.perform()
y_coordinate = open_window_elem.location["y"]
x_coordinate = open_window_elem.location["x"]
action = ActionChains(driver)
action.move_by_offset(x_coordinate, y_coordinate)
action.click()
action.perform()
sleep(20)
driver.find_element('xpath', '/html/body/app-root/app-public-template/app-public-base/app-public-stations-info-export/div/div/div/div[2]/button').click()

点击屏幕上的某个地方的一部分是工作,因为当我进入页面,似乎有一个弹出窗口,需要点击某处解散。然后,一个带有按钮的屏幕出现,我无法访问。

ffscu2ro

ffscu2ro1#

正如你在HTML中看到的,你想要点击的元素在object元素中。
在与objectiframe中的任何元素交互之前,您需要指示selenium切换到该对象,与您想要交互的元素交互,然后切换回默认上下文。

driver.switch_to.frame(driver.find_element("xpath", "//object"))

driver.find_element('xpath', '/html/body/app-root/app-public-template/app-public-base/app-public-stations-info-export/div/div/div/div[2]/button').click()

driver.switch_to.default_content()

相关问题