没有名字或ID的Selenium点击按钮

时间:2015-08-10 17:28:32

标签: javascript jquery python selenium automation

我一直在努力尝试自动化此页面。登录后,我在这个页面上,在我将我重定向到下一页之前,我应该点击一个按钮。问题是这个按钮没有名称或ID,这使得很难找到这个元素。我试过机械化和分裂。最后尝试了硒,但这也没有帮助。真的很挣扎。只需要点击这个该死的按钮!任何帮助都会非常感激。喜欢python和自动化,但这次似乎没有什么对我有用。请在下面找到一张快照,显示我点击“检查元素”时显示的代码。此外,我无法在此输入页面源代码,因为它是> 300000个字符,因此您可以查看该页面(您需要登录,只需10秒)。我所指的页面就在您登录后 - http://www.160by2.com/Index

[!Snapshot showing the code I get when I click "inspect element" [][1]] 1

5 个答案:

答案 0 :(得分:2)

class name

driver.findElement(By.className(" DA-SMS-BTN"。)

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

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

答案 1 :(得分:1)

您可以先尝试按ID获取表单,然后按类名获取按钮:

wd.find_element_by_id("frmDashboard").find_element_by_class_name("da-sms-btn").click()

答案 2 :(得分:1)

您可以尝试通过其xpath查找元素。 Selenium做得很好:

webdriver.find_element_by_xpath("element xpath").click()

您可以通过转到Chrome上的inspect元素侧栏并右键单击所需元素来轻松找到xpath。右键单击下拉菜单应该有一个选项“copy xpath”。

答案 3 :(得分:1)

我会按如下方式编写一个cssSelector并试试。

button[onclick*='aSMS']

注意,我正在使用*

进行部分搜索

答案 4 :(得分:0)

非常感谢您的回复!我实际上能够使用碎片而不是硒来使其工作!这就是我做的 -

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")

出色地完成了!谢谢大家:)