Selenium 无法定位字段集中的定位元素
Selenium unable to locate locate element within a fieldset
我想从“https://fhsaa.com/sports/2020/1/28/member_directory.aspx”网站抓取数据。这个想法是使用 id 或学校名称搜索学校名称,然后抓取信息。但是当我使用 xpath 或 css_selecotr 时出现异常 "o 这样的元素:无法定位元素:{"method":"xpath","selector":"//input[@name='school_name']"}
" 我已经使用了 xpath,css_selector 并且也在等待但没有成功。这是代码...
<fieldset class="border">
<legend class="border">School Filter</legend>
<form method="GET" action="https://fhsaahome.org/widget/school-directory/submit" accept-charset="UTF-8">
<div class="row">
<div class="col-md-4">
<select class="form-control" name="school_id"><option selected="selected" value="">--Select--</option><option value="714">Abundant Life Christian (Margate)</option><option value="665">Academy at the Lakes (Land O'Lakes)</option><option value="639">Academy Prep (St. Petersburg)</option><option value="4">Admiral Farragut (St. Petersburg)</option><option value="1191">AIE Charter (Miami Springs)</option>value="542">Zephyrhills</option><option value="1062">Zephyrhills Christian</option></select>
</div>
<div class="col-md-4">
<input class="form-control" placeholder="Enter School Name" name="school_name" type="text" value="">
</div>
<br><br>
<div class="col-md-2">
<input class="btn btn-secondary btn-md" type="submit" value="Search">
</div>
</div>
我在BaseX软件中测试了你的xpath,你的xpath是正确的。
但是你的 HTML 5 不正确
你有这个
ter (Miami Springs)</option>value="542">Zephyrhills</option>
你应该
ter (Miami Springs)</option><option value="542">Zephyrhills</option>
这是一个 iframe 游戏,我看到该网站已经 调用了一个 API 来不断调整 xpath 你是看着。我添加了一段代码在 iframe 之间切换,它们起作用了:
iframe = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to.frame(iframe)
element = driver.find_element_by_xpath('//html/body/div[1]/fieldset/form/div/div[2]/input')
这是完整的程序:
import os
from selenium import webdriver
from time import sleep
from random import randint
chromedriver = "C:\Program Files\Python39\Scripts\chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
url = 'https://fhsaa.com/sports/2020/1/28/member_directory.aspx'
driver.get(url)
sleep(randint(2,3))
iframe = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to.frame(iframe)
element = driver.find_element_by_xpath('//html/body/div[1]/fieldset/form/div/div[2]/input')
element.send_keys('yourschool')
sleep(randint(2,3))
我想从“https://fhsaa.com/sports/2020/1/28/member_directory.aspx”网站抓取数据。这个想法是使用 id 或学校名称搜索学校名称,然后抓取信息。但是当我使用 xpath 或 css_selecotr 时出现异常 "o 这样的元素:无法定位元素:{"method":"xpath","selector":"//input[@name='school_name']"}
" 我已经使用了 xpath,css_selector 并且也在等待但没有成功。这是代码...
<fieldset class="border">
<legend class="border">School Filter</legend>
<form method="GET" action="https://fhsaahome.org/widget/school-directory/submit" accept-charset="UTF-8">
<div class="row">
<div class="col-md-4">
<select class="form-control" name="school_id"><option selected="selected" value="">--Select--</option><option value="714">Abundant Life Christian (Margate)</option><option value="665">Academy at the Lakes (Land O'Lakes)</option><option value="639">Academy Prep (St. Petersburg)</option><option value="4">Admiral Farragut (St. Petersburg)</option><option value="1191">AIE Charter (Miami Springs)</option>value="542">Zephyrhills</option><option value="1062">Zephyrhills Christian</option></select>
</div>
<div class="col-md-4">
<input class="form-control" placeholder="Enter School Name" name="school_name" type="text" value="">
</div>
<br><br>
<div class="col-md-2">
<input class="btn btn-secondary btn-md" type="submit" value="Search">
</div>
</div>
我在BaseX软件中测试了你的xpath,你的xpath是正确的。
但是你的 HTML 5 不正确
你有这个
ter (Miami Springs)</option>value="542">Zephyrhills</option>
你应该
ter (Miami Springs)</option><option value="542">Zephyrhills</option>
这是一个 iframe 游戏,我看到该网站已经 调用了一个 API 来不断调整 xpath 你是看着。我添加了一段代码在 iframe 之间切换,它们起作用了:
iframe = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to.frame(iframe)
element = driver.find_element_by_xpath('//html/body/div[1]/fieldset/form/div/div[2]/input')
这是完整的程序:
import os
from selenium import webdriver
from time import sleep
from random import randint
chromedriver = "C:\Program Files\Python39\Scripts\chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
url = 'https://fhsaa.com/sports/2020/1/28/member_directory.aspx'
driver.get(url)
sleep(randint(2,3))
iframe = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to.frame(iframe)
element = driver.find_element_by_xpath('//html/body/div[1]/fieldset/form/div/div[2]/input')
element.send_keys('yourschool')
sleep(randint(2,3))