【问题标题】:Selenium clicking button with no name or idSelenium 单击没有名称或 ID 的按钮
【发布时间】:2015-11-02 17:27:44
【问题描述】:
【问题讨论】:
标签:
javascript
jquery
python
selenium
automation
【解决方案1】:
非常感谢您的回复!我实际上能够使用 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")
效果很好!谢谢大家:)
【解决方案2】:
有class name:
driver.findElement(By.className("da-sms-btn").
您也可以在 Chrome 中打开应用程序并在浏览器中复制 CSS 或 XPATH:
- 在 Chrome 中打开应用程序
- 检查元素
- 右键单击突出显示的区域
- 复制 CSS 或 XPATH
【解决方案3】:
我会按如下方式编写一个 cssSelector 并尝试一下。
button[onclick*='aSMS']
注意,我正在使用 * 进行部分搜索
【解决方案4】:
您可以尝试通过其 xpath 找到该元素。 Selenium 在这方面做得很好:
webdriver.find_element_by_xpath("element xpath").click()
您可以通过转到 Chrome 上的检查元素侧边栏并右键单击所需的元素来轻松找到 xpath。右键单击下拉菜单应该有一个选项“复制 xpath”。
【解决方案5】:
您可以尝试先通过 id 获取表单,然后通过类名获取按钮:
wd.find_element_by_id("frmDashboard").find_element_by_class_name("da-sms-btn").click()