用于单击图像的python中的Selenium Web驱动程序代码

时间:2018-05-03 11:46:27

标签: python-3.x selenium selenium-webdriver webdriver webdriverwait

我需要python代码的帮助,以便我可以使用Sony selenium将图像上的点击事件设为webdriver。 我是selenium web driver&的新手。蟒蛇。 请注意,点击" 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 :(得分:1)

当您使用by_partial_link_text进行搜索时,Selenium需要a html标记内的文字。由于它位于span内,因此无法找到它。

你能做什么:

  1. 编写Css选择器,仅使用标记和属性查找包含所需图像的标记。在这里,您需要检查整个HTML。由于我无法访问,我只能假设以下示例。

    div.idpDescription span
    
  2. 根据文本内容编写XPath。由于您不习惯使用Selenium进行开发,因此您可能更难理解XPath。

    //span[text()='Sony Inc.']
    

答案 1 :(得分:-1)

根据 HTML ,当您尝试在 WebElement 上调用click()并使用 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()