<p>看看这个:<a href="https://selenium-python.readthedocs.io/locating-elements.html" rel="nofollow noreferrer">strategies to locate elements on a page</a></p>
<p>以下是找到“添加”按钮的一些方法:</p>
<p><strong>使用XPATH:</strong></p>
<pre><code>from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("start-maximized")
chrome_options.add_argument(" disable-infobars")
chrome_options.add_argument(" disable-extensions")
chrome_options.add_argument(" disable-popup-blocking")
# disable the banner "Chrome is being controlled by automated test software"
chrome_options.add_experimental_option("useAutomationExtension", False)
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=chrome_options)
driver.get('https://efun.toronto.ca/torontofun/Activities/ActivitiesCourseDetails.asp?aid=18830&cid=6455687')
add_button = driver.find_elements_by_xpath("//a[contains(@href,'Add')]")
add_button[0].click()
</code></pre>
<p><strong>使用CSS\u选择器:</strong></p>
<pre><code>from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("start-maximized")
chrome_options.add_argument(" disable-infobars")
chrome_options.add_argument(" disable-extensions")
chrome_options.add_argument(" disable-popup-blocking")
# disable the banner "Chrome is being controlled by automated test software"
chrome_options.add_experimental_option("useAutomationExtension", False)
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=chrome_options)
driver.get('https://efun.toronto.ca/torontofun/Activities/ActivitiesCourseDetails.asp?aid=18830&cid=6455687')
add_button = driver.find_elements_by_css_selector('.ui-state-active')
add_button[2].click()
</code></pre>
<p><strong>使用链接\u文本:</strong></p>
<pre><code>from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("start-maximized")
chrome_options.add_argument(" disable-infobars")
chrome_options.add_argument(" disable-extensions")
chrome_options.add_argument(" disable-popup-blocking")
# disable the banner "Chrome is being controlled by automated test software"
chrome_options.add_experimental_option("useAutomationExtension", False)
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=chrome_options)
driver.get('https://efun.toronto.ca/torontofun/Activities/ActivitiesCourseDetails.asp?aid=18830&cid=6455687')
add_button = driver.find_element_by_link_text('Add')
add_button.click()
</code></pre>
<p>有时,您的代码可以在单击“按钮”之前执行。发生这种情况时,将抛出一个错误。在查找可单击的元素时,添加WebDriverWait语句是一种很好的做法</p>
<p>参考:<a href="https://selenium-python.readthedocs.io/waits.html" rel="nofollow noreferrer">selenium wait statements</a></p>
<pre><code>from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_options = Options()
chrome_options.add_argument("start-maximized")
chrome_options.add_argument(" disable-infobars")
chrome_options.add_argument(" disable-extensions")
chrome_options.add_argument(" disable-popup-blocking")
# disable the banner "Chrome is being controlled by automated test software"
chrome_options.add_experimental_option("useAutomationExtension", False)
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=chrome_options)
driver.get('https://efun.toronto.ca/torontofun/Activities/ActivitiesCourseDetails.asp?aid=18830&cid=6455687')
# one method
wait = WebDriverWait(driver, 30)
add_button = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "Add")))
add_button.click()
# another method
# wait = WebDriverWait(driver, 30)
# wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "Add"))).click()
</code></pre>
<p><a href="https://i.stack.imgur.com/kY1Aq.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/kY1Aq.jpg" alt="enter image description here"/></a></p>