Как нажать на графическую кнопку на странице веб-браузера, используя python с селеном - PullRequest
0 голосов
/ 07 января 2020
<li id="tb_7" class="siebui-toolbar-enable" data-cmd="#15" data-subtoolbar="N" role="menuitem" 
title="Site Map" name="SiteMap" tabindex="-1" data-tbindex="7" data-autom="find:[ot]"><span 
class="siebui-icon-tb-sitemap ToolbarButtonOn"><img src="images/icon_sitemap_1.gif"><span 
class="siebui-toolbar-text">Site Map</span></span></li>

Я пробовал с приведенным ниже кодом, который позволяет мне войти в приложение после успешного входа в систему, но с ошибкой (внизу):

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC

username = 'abc'
password = '****'
url = 'someurl.com'

driver = webdriver.Chrome('C:/chromedriver.exe')
driver.get(url)
driver.find_element_by_name('UserName').send_keys(username)
driver.find_element_by_name('Password').send_keys(password)
driver.find_element_by_id('s_22').click()
wait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Site 
Map']"))).click()'''

Ошибка:

File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:

1 Ответ

0 голосов
/ 07 января 2020

Вы были близки. Вы можете вызвать WebDriverWait для element_to_be_clickable() и использовать одну из следующих Стратегий локатора :

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li.siebui-toolbar-enable[name='SiteMap'][title='Site Map']>span.siebui-icon-tb-sitemap.ToolbarButtonOn>img[src*='images/icon_sitemap_1']"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='siebui-toolbar-enable' and @name='SiteMap'][@title='Site Map']/span[@class='siebui-icon-tb-sitemap ToolbarButtonOn']/img[contains(@src, 'images/icon_sitemap_1')]"))).click()
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
...