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

Python 使用selenium驱动程序。查找元素()。在细分的网页上单击(),python,selenium,Python,Selenium,首先,我对网页抓取、html和selenium都是新手,所以我的问题对你们来说可能没有什么意义 我要做的是:自动点击网页上的图像。手动单击此图像可以在网页的某个部分显示新信息 我是如何尝试的:我发现了一些特定于此图像的内容,例如: <img src="images/btn_qmj.gif" border="0"> 问题:这将返回一个空列表。我部分理解原因,但我没有任何解决办法 我在这里包括了我在web inspector上获得的html树的

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

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

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

<img src="images/btn_qmj.gif" border="0">
问题:这将返回一个空列表。我部分理解原因,但我没有任何解决办法

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

您是否尝试过先切换到帧

driver.switch_to.frame('gauche')

你试过先切换到画面吗

driver.switch_to.frame('gauche')

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

 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(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

该元素位于
iframe
中。要访问该元素,需要先将其切换

诱导
WebDriverWait
()和
frame\u变为可用,并切换为可用()

诱导
WebDriverWait
()和
所定位元素的可见性()

您需要导入以下库

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

该元素位于
iframe
中。要访问该元素,需要先将其切换

诱导
WebDriverWait
()和
frame\u变为可用,并切换为可用()

诱导
WebDriverWait
()和
所定位元素的可见性()

您需要导入以下库

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

如果您可以共享网页URL,可能会更容易获得帮助。如果您可以共享网页URL,可能会更容易获得帮助。谢谢您的回答!这很有帮助@Barth33:很高兴帮助你!!!在与web元素交互时始终使用显式等待。谢谢。也谢谢您的回答!这很有帮助@Barth33:很高兴帮助你!!!在与web元素交互时始终使用显式等待。谢谢。也谢谢您的回答!这个切换框架非常强大。我很乐意这样做,但有可能为多个答案这样做吗?因为我已经为我收到的第一个答案做了类似的事情。是的,你可以毫无疑问地完成它。我的代码非常清楚,我还添加了显式等待,包括切换回父窗口谢谢您的回答!这个切换框架非常强大。我很乐意这样做,但有可能为多个答案这样做吗?因为我已经为我收到的第一个答案做了类似的事情。是的,你可以毫无疑问地完成它。我的代码非常清晰,我还添加了显式等待,包括切换回父窗口