在细分网页上使用硒driver.find_element().click()

首先,我是网络抓取,html和硒的新手,所以我的问题对你来说似乎没有意义。

我正在尝试执行的操作:自动单击网页上的图像。手动单击此图像允许在网页的一部分上显示新信息。

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

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

所以我刚刚输入了蟒蛇:

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

问题:这给我返回了一个空列表。我部分理解为什么,但我没有任何解决方案。

代码检查器的图像

我在这里包括了我在Web检查器上获得的html树的图像。正如人们所看到的,达到我兴趣线的树给出了“/html/框架集/框架1/#document/html/正文/中心/表/tbody/tr[2]/td/a/img”。问题是我无法访问 - 通过使用xpath - #document之后的任何内容。如果我尝试复制我感兴趣的行的xpath,它只会将其跟踪到第二个“/html”。这就像页面被细分,划分,内部部分我无法访问。我想有一种方法可以访问#document内容,也许它指的是另一个网页,但我被困在了这一点上。如果有人能在这方面帮助我,我将不胜感激。


精慕HU
浏览 179回答 3
3回答

慕尼黑8549860

您是否尝试过先切换到框架?driver.switch_to.frame('gauche')

www说

您需要先将控制切换到帧以处理其上的图像。请参阅以下代码供您参考&nbsp;driver.switch_to_frame(frame)&nbsp;WebDriverWait(driver, 20).until(&nbsp;EC.visibility_of_element_located((By.XPATH, "'//img[@src="images/btn_qmj.gif"]'"))).click()&nbsp;driver.switch_to_default_content()注意 :: 您需要在下面添加导入from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC

长风秋雁

元素存在于 .为了访问元素,您需要先切换它。iframe诱导 () 和WebDriverWaitframe_to_be_available_and_switch_to_it()诱导 () 和WebDriverWaitvisibility_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 WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import By
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python