Мне нужна помощь в коде Python, чтобы я мог иметь событие щелчка на изображении как Sony, используя seleniumwebdriver.
Я новичок в веб-драйвере Selenium и Python.
Обратите внимание, что после нажатия на «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();





В соответствии с 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()
Большое спасибо, Дебанджан, ты решил мою проблему. Спасибо, что поделились подробной информацией.
Когда вы выполняете поиск с помощью by_partial_link_text, Selenium ожидает текст внутри html-тега a. Поскольку он находится внутри span, он его не найдет.
Что ты можешь сделать:
Напишите селектор Css, чтобы найти тег, содержащий желаемое изображение, используя только теги и атрибуты. Здесь нужно проверить весь HTML. Поскольку у меня нет доступа к этому, я могу только предположить приведенный ниже пример.
div.idpDescription span
Напишите XPath на основе текстового содержимого. Вам может быть труднее понять XPath, поскольку вы не привыкли разрабатывать с помощью Selenium.
//span[text()='Sony Inc.']
поделитесь соответствующим HTML.