Код Selenium Web Driver в Python для нажатия на изображение - PullRequest
0 голосов
/ 03 мая 2018

Мне нужна помощь в коде Python, чтобы я мог иметь событие клика по изображению как Sony, используя selenium webdriver. Я новичок в веб-драйвере и питоне Selen. Обратите внимание, что после нажатия на «Testing Inc.» изображение, на следующей странице будут отображаться данные для входа.

Вот код Javascript: -

<div class="idpDescription float"><span class="largeTextNoWrap indentNonCollapsible">Sony Inc.</span></div> <span class="largeTextNoWrap indentNonCollapsible">Sony Inc.</span> 

Код Python, написанный мной, но при нажатии на изображение не происходит событие клика: -

import os 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys

# get the path of IEDriverServer 
dir = os.path.dirname(file) 
Ie_driver_path = dir + "\IEDriverServer.exe"
#create a new IE session 
driver = webdriver.Ie("D:\SCripts\IEDriverServer.exe") 
driver.maximize_window()
#navigate to the application home page 
driver.get("example.com") 
element=driver.find_element_by_partial_link_text("Testing Inc.").click();

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

При поиске с использованием by_partial_link_text Selenium ожидает текст внутри тега a html. Поскольку он находится внутри span, он не найдет его.

Что вы можете сделать:

  1. Напишите селектор Css, чтобы найти тег, содержащий желаемое изображение, используя только теги и атрибуты. Здесь вам нужно проверить весь HTML. Поскольку у меня нет доступа к этому, я могу взять только приведенный ниже пример.

    div.idpDescription span
    
  2. Написать XPath на основе текстового содержимого. Вам может быть труднее понять XPath, поскольку вы не привыкли к разработке с Selenium.

    //span[text()='Sony Inc.']
    
0 голосов
/ 03 мая 2018

В соответствии с HTML , которым вы поделились, и пробной версией кода при попытке вызвать click() на WebElement с текстом Sony Inc. вам нужно вызвать WebDriverWait , чтобы элемент можно было нажимать следующим образом:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# other lines of code
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='idpDescription float']/span[@class='largeTextNoWrap indentNonCollapsible']"))).click()

Вы можете получить более детальное добавление Текст ссылки к xpath следующим образом:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# other lines of code
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='idpDescription float']/span[@class='largeTextNoWrap indentNonCollapsible' and contains(.,'Sony Inc.')]"))).click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...