如何使用Selenium和Python在网页中单击按钮A到Zhttp://architects-register.org.uk/list/regions
所以我有这个网站,我想让代码点击按钮A,然后B和C等等。我该怎么做呢。我尝试了这段代码,它试图获取元素子元素的值,然后相应地单击按钮,但它不起作用。除了下面的错误之外,我怀疑还有其他一些问题如何使用Selenium和Python在网页中单击按钮A到Zhttp://architects-register.org.uk/list/regions,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,所以我有这个网站,我想让代码点击按钮A,然后B和C等等。我该怎么做呢。我尝试了这段代码,它试图获取元素子元素的值,然后相应地单击按钮,但它不起作用。除了下面的错误之外,我怀疑还有其他一些问题 from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChai
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
url = 'http://architects-register.org.uk/'
driver.get(url)
find_uk = driver.find_element_by_id('ctl00_hlCountiesT').click()
elements = alphabets[0].find_element_by_tag_name('li')
def getChild(el):
return el.children[0].children[0]
for element in elements:
element = element[elements]
(getChild(element)).click()
name错误:名称“alphabets”未定义
字母表
未导入或定义在给定代码块中的任何位置,因此尝试访问其索引将以所示方式失败。它看起来像是字母表
可能是调用按标签名查找元素
或按类名查找元素
的结果,这将返回一个按钮列表,然后您可以重复并单击该列表。字母表
未在给定代码块中的任何位置导入或定义,因此,尝试访问其上的索引将以所示方式失败。它看起来像是alphabets
可能是调用find_elements_by_tag_name
或find_elements_by_class_name
的结果,这将返回一个按钮列表,然后您可以重复并单击该列表。归纳WebDriverWait
和所有元素的可见性
()然后单击每个链接
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 import webdriver
driver = webdriver.Firefox()
url = 'http://architects-register.org.uk/'
driver.get(url)
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID,"ctl00_hlCountiesT"))).click()
elements =WebDriverWait(driver,10).until(EC.visibility_of_all_elements_located((By.XPATH,"//div[@class='alphabet_list_content']//li//input")))
for ele in range(len(elements)):
elements = WebDriverWait(driver,10).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='alphabet_list_content']//li//input")))
elements[ele].click()
导入位于的所有元素的
WebDriverWait
和可见性(),然后单击每个链接
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 import webdriver
driver = webdriver.Firefox()
url = 'http://architects-register.org.uk/'
driver.get(url)
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID,"ctl00_hlCountiesT"))).click()
elements =WebDriverWait(driver,10).until(EC.visibility_of_all_elements_located((By.XPATH,"//div[@class='alphabet_list_content']//li//input")))
for ele in range(len(elements)):
elements = WebDriverWait(driver,10).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='alphabet_list_content']//li//input")))
elements[ele].click()
要单击按钮A,然后单击按钮B和C等等,您必须使元素的WebDriverWait可单击()
,并且您可以使用以下任一选项:
- 使用
CSS\u选择器
:
driver.get("http://architects-register.org.uk/list/regions")
for i in range(1, len(WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.alphabet_list_content>ul li"))))):
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.alphabet_list_content>ul li:nth-of-type({})>a>input".format(i)))).click()
driver.quit()
- 使用
XPATH
:
driver.get("http://architects-register.org.uk/list/regions")
for i in range(1, len(WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='alphabet_list_content']/ul//li"))))):
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='alphabet_list_content']/ul//following-sibling::li[{}]/a/input".format(i)))).click()
driver.quit()
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
要单击按钮A,然后单击按钮B和C,依此类推,您必须引导WebDriverWait使元素可单击()
,并且您可以使用以下任一选项:
- 使用
CSS\u选择器
:
driver.get("http://architects-register.org.uk/list/regions")
for i in range(1, len(WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.alphabet_list_content>ul li"))))):
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.alphabet_list_content>ul li:nth-of-type({})>a>input".format(i)))).click()
driver.quit()
- 使用
XPATH
:
driver.get("http://architects-register.org.uk/list/regions")
for i in range(1, len(WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='alphabet_list_content']/ul//li"))))):
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='alphabet_list_content']/ul//following-sibling::li[{}]/a/input".format(i)))).click()
driver.quit()
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
问题可能在于变量“字母表”未定义?问题可能在于变量“字母表”未定义?