无法使用硒定位元素



我正在使用Selenium与Python和Chromedriver来单击"按钮"(实际上不是HTML中的按钮,但看起来像屏幕上的按钮并且可以单击(。HTML 在下面,我正在尝试单击带有"按钮新"ID 的那个。

<td class="read" colspan="4">
<a href="#" id="button-read" onclick="formRead(); return false;" title="Read record from database" tabindex="1" class="button button-read">Read</a>
<a id="button-new" title="Read new record from database" class="button button-new">New</a>
</td>

我试过使用:

new_button = driver.find_element_by_id("button-new")
new_button = driver.find_element_by_css_selector("A.button.button-new")
new_button = driver.find_element_by_xpath('//*[@id="button-new"]')

其次

new_button.click()

但是我得到了NoSuchElementException,它找不到它。

我没有遇到任何其他元素的问题,也不确定我哪里出了问题。

使用解决方案编辑:

我意识到我需要切换 iframe

driver.switch_to.frame(driver.find_element_by_id("nested1"))

要确定元素是否被定位,请尝试以下操作:

new_button_list = driver.find_elements_by_xpath('//a[@id="button-new"]')

这将返回一个列表,因为使用了"元素":

然后检查列表的长度,一件好事是它不会通过异常,并且还会让您知道该元素是否已找到。

尝试将其与if语句一起使用,也许他们特别放了一个空按钮来混淆我们,

new_button = driver.find_element_by_id("button-new")
if new_button:
new_button.click()

你能和find_elements_by_id核实有多少BTN吗?

btns = driver.find_elements_by_id("button-new")
print(btns)
# also we can check with # find_elements_by_id
btns = driver.find_elements_by_id("button-new")
if len(btns):
new_button[0].click()

相关内容

  • 没有找到相关文章

最新更新