2017-02-16 27 views
1

У меня есть этот HTMLВыбор элемента по имени тега с Specific Text - Селен

<div class="callout callout-accordion" style="background-image: url(&quot;/images/expand.png&quot;);"> 
    <span class="edit" data-pk="bandwidth_bar">Bandwidth Settings</span> 
    <span class="telnet-arrow"></span> 
</div> 

Я пытаюсь выбрать интервал с текстом = Bandwidth Settings, и нажмите на DIV с именем класса = callout ,

if driver.find_element_by_tag_name("span") == ("Bandwidth Settings"): 
    print "Found" 
    time.sleep(100) 
    driver.find_element_by_tag_name("div").find_element_by_class_name("callout").click() 


print "Not found" 
time.sleep(100) 

я продолжал получать

Testing started at 1:59 PM ... 
Not found 

Process finished with exit code 0 

Что я пропустил?


Выбрать Родитель Div

if driver.find_element_by_xpath("//span[text()='Bandwidth Settings']") is None: 
     print "Not Found" 
    else : 
     print "Found" 
     span = driver.find_element_by_xpath("//span[text()='Bandwidth Settings']") 
     div = span.find_element_by_xpath('..') 
     div.click() 

Я получил

WebDriverException: Message: unknown error: Element

+0

driver.find_element_by_tag_name ("span") найдет более одного элемента –

+0

Ohh. Понимаю. Как я могу выбрать диапазон с помощью строки 'text == '? – ihue

+0

Попробуйте использовать класс вместо диапазона driver.FindElement (By.ClassName («Редактировать»)). Текст –

ответ

2

Один из способов будет использовать find_element_by_xpath(xpath) так:

if driver.find_element_by_xpath("//span[contains(.,'Bandwidth Settings')]") is None: 
    print "Not found" 
else: 
    print "Found" 
    ... 

Для точного соответствия (как вы попросил в вашем комментарии) u се "//span[text()='Bandwidth Settings']"

На отредактированном вопрос, попробуйте один из них:

Расположить напрямую (если нет другого соответствующего элемента):

driver.find_element_by_css_selector("div[style*='/images/telenet/expand.png']") 

Расположить через промежуток (при условии, что нет другого ДИВ на этом уровне):

driver.find_element_by_xpath("//span[contains(.,'Bandwidth Settings')]/../div") 
+0

Как выбрать родительский div этого? – ihue

+0

Я пробовал 'driver.find_element_by_css_selector (" div.callout ").click() ', он щелкнет по первому найденному :( – ihue

+0

Надеюсь, вы не возражаете, дайте мне подсказку. – ihue

0

код, который вы должны использовать:

from selenium.common.exceptions import NoSuchElementException 

try: 
    span = driver.find_element_by_xpath('//span[text()="Bandwidth Settings"]') 
    print "Found" 
except NoSuchElementException: 
    print "Not found" 

Если вам нужно выбрать родителю div элемент:

div = span.find_element_by_xpath('./parent::div') 
0

Если у вас есть шипение на странице (JQuery), вы можете выбрать пролеты их текст следующим образом:

$ ("продолжительность: содержит ('Настройки полосы пропускания') ")

, которые будут выбраны таким образом, используя привязок

By.CssSelector("span:contains('Bandwidth Settings')") 
C#

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

  • Нет связанных вопросов^_^