繁体   English   中英

如何使用 Selenium 单击按钮

[英]How to click on a button with Selenium

我尝试在 Python 中使用 Selenium 捕捉查看器中的“下一步”按钮,但没有任何效果,我收到一条错误消息。

我执行的代码:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'chromedriver.exe')
driver.get('https://web.nli.org.il/sites/NLI/Hebrew/digitallibrary/pages/viewer.aspx?&presentorid=MANUSCRIPTS&docid=PNX_MANUSCRIPTS990000907570205171-1')
WebDriverWait(driver, 10)

到现在为止,一切都很好。 这就是问题出现的地方。

我想点击下一个箭头: 在此处输入图片说明

在检查此箭头的源代码时,我得到以下代码: <div id="next" class="left"><a href="#" title="next">&nbsp;</a></div>

所以这些是我的尝试:

XPath

driver.find_elements_by_xpath('//*[@id="next"]')

返回一个空列表。

ID

driver.find_elements_by_id("next")

返回一个空列表。

那么,我怎样才能抓住这个按钮并点击它呢?

该箭头在 iframe 中,因此驱动程序需要更改其焦点。

然后你可以使用explicit wait来点击它:

CSS_SELECTOR :

div#next

示例代码:

driver = webdriver.Chrome(options=options, executable_path=r'chromedriver.exe')
driver.get('URL here')
WebDriverWait(driver, 10)
wait = WebDriverWait(driver, 10)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "MainIframe")))
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#next"))).click()

进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

您可以使用以下 css 选择器:

  1. .left [title='Next']
  2. div.left
  3. div .left [title='Next']

//div[@id='next']//child::a可能有不同的元素,其 id 为next所以专门为div定义,我可以看到adiv的孩子

你可以用explicitWait检查它

wait = WebDriverWait(driver,10)
wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@id='next']//child::a"))).click()

还找到了一个id = MainIframename = zoomeriframe ,在该iframe下可以使用所需的元素,因此您可以切换到框架并获取所需的元素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM