使用selenium驱动程序。查找元素()。在细分的网页上单击()

2024-10-03 19:30:08 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我对网页抓取、html和selenium都是新手,所以我的问题对你们来说可能没有什么意义

我要做的是:自动点击网页上的图像。手动单击此图像可以在网页的某个部分显示新信息

我是如何尝试的:我发现了一些特定于此图像的内容,例如:

<img src="images/btn_qmj.gif" border="0">

所以我刚刚输入了python:

xpath = '//img[@src="images/btn_qmj.gif"]'
driver.find_elements_by_xpath(xpath)

问题:这将返回一个空列表。我部分理解原因,但我没有任何解决办法

image of the html code inspector

我在这里包括了我在web inspector上获得的html树的图像。可以看到,到达我感兴趣的行的树给出了“/html/frameset/frame1/#document/html/body/center/table/tbody/tr[2]/td/a/img”。 问题是,我无法使用xpath访问#文档后面的任何内容。如果我试图复制我感兴趣的行的xpath,它将只跟踪到第二个“/html”。这就像是页面被细分、划分,内部部分我无法访问。我想有一种方法可以访问#文档内容,也许它指的是另一个网页,但我在这一点上卡住了。 如果有人能在这方面帮助我,我将不胜感激


Tags: 文档图像src网页内容imginspectorhtml
3条回答

您需要先将控件切换到“帧”以处理其上的图像。请参考下面的代码

 driver.switch_to_frame(frame)
 WebDriverWait(driver, 20).until(
 EC.visibility_of_element_located((By.XPATH, "'//img[@src="images/btn_qmj.gif"]'"))).click()
 driver.switch_to_default_content()

注意::您需要添加以下导入

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

你试过先切换到画面吗

driver.switch_to.frame('gauche')

元素存在于iframe中。要访问该元素,需要先切换它

诱导WebDriverWait()和frame_to_be_available_and_switch_to_it()

诱导WebDriverWait()和visibility_of_element_located()

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"gauche")))
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"//img[@src='images/btn_qmj.gif']"))).click()

您需要导入以下库

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

相关问题 更多 >