2015-08-10 3 views
3

Я изо всех сил пытаюсь автоматизировать эту страницу. После входа в систему я нахожусь на этой странице, где я должен нажать кнопку, прежде чем перенаправить меня на следующую страницу. Проблема в том, что эта кнопка не имеет имени или идентификатора, из-за чего очень сложно найти этот элемент. Я пробовал механизировать и осколки. И, наконец, попробовал селен, но это тоже не помогло. На самом деле борется с этим. Просто нужно нажать эту проклятую кнопку! Любая помощь будет действительно очень оценена. Любовный питон и автоматизация, но на этот раз для меня ничего не работает. Ниже приведен снимок, показывающий показанный код, когда я нажимаю «элемент проверки». Кроме того, я не могу ввести здесь исходный код страницы, так как это> 300000 символов, поэтому вы можете, вероятно, взглянуть на страницу (вам нужно войти в систему, которая занимает всего 10 секунд). Страница, на которую я имею в виду, находится сразу после вашего входа в систему - http://www.160by2.com/IndexКнопка щелчка Selenium без имени или id

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

+0

Входит ли он в единственный элемент кнопки на экране? –

ответ

1

Вы можете попробовать первый получать форму по идентификатору, а затем получить кнопку имя класса:

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

Вы можете попытаться найти элемент через его XPath. Селен делает хорошую работу этого:

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

Вы можете легко найти XPath, перейдя на инспектировать элемент боковой панели на Chrome и правой кнопкой мыши на элемент, который вы хотите. В раскрывающемся меню правой кнопкой мыши должна быть опция «copy xpath».

1

Я бы написал cssSelector следующим образом и попробуйте это.

button[onclick*='aSMS'] 

Обратите внимание, что я делаю частичный поиск с *

2

Существует class name:.

driver.findElement (By.className ("да-смс-BTN")

Также вы можете открыть приложение в Chrome и скопировать CSS или XPATH в браузере:

  1. Открыть приложение в Chrome
  2. Осмотрите элемент
  3. правой кнопкой мыши на выделенной области
  4. Copy CSS или XPATH
+0

Удивительный! Не знал об этой копии XPATH: D – ppumkin

0

Большое вам спасибо за ваши ответы! Я действительно мог заставить его работать, используя осколок вместо селена! Вот что я сделал:

1) Я только что выполнил js, который выполнялся в событии onclick кнопки.

jsstring="window.parent.openPage('SendSMS?id="+id+"', 'aSendSMS', 'aSMS', 'ulSMS')" 
br.execute_script(jsstring) 

2) Впоследствии, я столкнулся с проблемой, что на следующей странице, все было вложенной внутри фрейма, и так find_by_name и все они были не в состоянии найти элементы. Для этого, осколок обеспечивает хороший метод (который документированный очень плохо, поэтому пришлось понять это сам с помощью от 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") 

Работал блестяще!Спасибо всем :)

Смежные вопросы