我试图在美联储的文件过滤页面上用selenium在“分钟(1993年至今)”上打勾
https://www.federalreserve.gov/monetarypolicy/materials/
这是我的密码。我尝试了以下方法,我一直得到“消息:没有这样的元素:找不到元素:找不到元素”
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
import time
PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://www.federalreserve.gov/monetarypolicy/materials/")
link = driver.find_element_by_xpath('//*[@id="article"]/app-root/div/ng-component/div[1]/div/div/form/app-doc-types/div[2]/div/div/div[7]/label/input').click()
link = driver.find_element_by_xpath("//div[@class='form-group']/div/div[7]/label/input[contains(text(), 'Minutes (1993-Present)')]").click()
link = driver.find_element_by_css_selector('div.form-group div:nth-child(7) label input').click()
我把下面HTML的一些部分切掉了
<app-doc-types><div class="eventSearch__label">
<p class="form-control-static">
<strong><legend class="ng-binding">Type:</legend></strong>
</p>
</div>
<div class="eventSearch__inputs">
<div class="form-group">
<div class="row">
<div class="col-lg-6">
<label>
<input type="checkbox" class="ng-untouched ng-pristine ng-valid">
Agendas
</label>
</div><div class="col-lg-6">
<label>
<input type="checkbox" class="ng-untouched ng-pristine ng-valid">
Beige Books/Redbooks
</label>
</div><div class="col-lg-6">
<label>
<input type="checkbox" class="ng-untouched ng-pristine ng-valid">
Bluebooks
</label>
</div><div class="col-lg-6">
<label>
<input type="checkbox" class="ng-untouched ng-pristine ng-valid">
Chairman's FOMC Press Conferences
</label>
</div><div class="col-lg-6">
<label>
<input type="checkbox" class="ng-untouched ng-pristine ng-valid">
Greenbooks
</label>
</div><div class="col-lg-6">
<label>
<input type="checkbox" class="ng-untouched ng-pristine ng-valid">
Memos
</label>
</div><div class="col-lg-6">
<label>
<input type="checkbox" class="ng-valid ng-dirty ng-touched">
Minutes (1993-Present)
</label>
</div><!---->
</div>
</div>
</div>
</app-doc-types>
网站加载需要一些时间。在用
driver
打开网页后,我添加了time.sleep(2)
您的第一个XPath应该可以工作,但是它非常依赖于页面的结构,因此由于对页面的HTML结构进行了一些修改,它可能无法工作
第二个XPath不起作用,实际上您不需要在路径的末尾添加
text()
检查。这应该有效://div[@class='form-group']/div/div[7]/label/input
CSS选择器路径应该可以工作,但是您的CSS路径可以轻松简化。请在下面检查我的解决方案:
或者,您可以使用
explicit wait
你可以用剧作家
相关问题 更多 >
编程相关推荐