Selenium如何点击没有名称或ID的按钮

3
我一直在试图自动化这个页面。登录后,我会来到一个页面,在重定向到下一个页面之前,我应该点击一个按钮。问题是,这个按钮没有名称或ID,这使得找到这个元素非常困难。我已经尝试了机械化和splinter,最后尝试了selenium,但也没有帮助。真的很苦恼。只需要点击这个该死的按钮!任何帮助都将不胜感激。喜欢Python和自动化,但这次似乎什么都没用。请查看下面的快照,显示单击“检查元素”时显示的代码。另外,我无法在此处输入页面源代码,因为它超过300,000个字符,所以您可能需要查看页面(您需要登录,只需10秒)。我指的页面就是您登录后的页面- http://www.160by2.com/Index

[!单击“检查元素”时显示的代码快照 [][1]]1


它只在屏幕上的一个按钮元素中吗? - nivix zixer
5个回答

3

有一个类名:

driver.findElement(By.className("da-sms-btn").

您也可以在Chrome中打开应用程序并复制浏览器中的CSS或XPATH:

  1. 在Chrome中打开应用程序
  2. 检查元素
  3. 右键单击突出显示的区域
  4. 复制CSS或XPATH

太棒了!我不知道有复制XPATH的功能:D - Piotr Kula

1
你可以尝试通过id获取表单,然后通过类名获取按钮:
wd.find_element_by_id("frmDashboard").find_element_by_class_name("da-sms-btn").click()

1
你可以尝试通过xpath查找元素。Selenium在这方面做得很好:
webdriver.find_element_by_xpath("element xpath").click()

您可以通过在Chrome的检查元素侧边栏中右键单击要查找的元素来轻松找到xpath。右键单击下拉菜单应该有一个“复制xpath”的选项。


1
我会编写以下的 cssSelector 并尝试使用它。
button[onclick*='aSMS']

注意,我正在使用 * 进行部分搜索。

0
非常感谢您的回复!我实际上使用splinter而不是selenium成功地使它工作了!这是我所做的-
1)我只是执行了在按钮的onclick事件上执行的js。
jsstring="window.parent.openPage('SendSMS?id="+id+"', 'aSendSMS', 'aSMS', 'ulSMS')"
br.execute_script(jsstring)

2) 接下来,我面临的问题是在下一页中,所有内容都嵌入了iframe中,因此find_by_name等方法无法找到元素。为此,splinter提供了一个很好的方法(文档真的很差,所以我不得不在stackoverflow的帮助下自己解决)

with br.get_iframe('iframe_Name') as iframe:
     iframe.fill("Element_to_fill_Name","Text_to_fill")
     iframe.find_by_tag("TagName")[Index_number].fill("Text_To_Fill")

太棒了!感谢大家 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接