如何点击包含javascript

时间:2017-08-08 11:01:20

标签: python selenium-webdriver web-scraping

我想点击链接名称" 12FDEW01"并从链接

中的右侧页面读取数据
'https://www-nass.nhtsa.dot.gov/nass/cds/CaseForm.aspx?  xsl=main.xsl&CaseID=773013618'

它可以通过车辆2访问 - >车辆外部 - >挤压型材
但内部链接包含java脚本。如何通过单击文本来读取数据。

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

driver = webdriver.Ie()
url_database = 'https://www-nass.nhtsa.dot.gov/nass/cds/CaseForm.aspx?  xsl=main.xsl&CaseID=773013618'
driver.get(url_database)
aElements = driver.find_elements_by_tag_name("a")
for name in aElements:
    print(name)
    name.click()    
    name.get_attribute('value')

HTML code:

<ul>
   <li><a class="menu" onclick="toggleswitch(this)" href="javascript:parent.loadViewer('VE.xsl','VehicleExterior‌​Forms','CDC','',2,-1‌​,1,'247573099','Vehi‌​cle 2 Exterior - CDC - 12FDEW01',773013618)">12FDEW01</a><img src="img/info.png" alt="&#xA;Event 1 : Struck Vehicle 1" title="&#xA;Event 1 : Struck Vehicle 1"></img></li>
</ul>

1 个答案:

答案 0 :(得分:0)

尝试以下XPath: -

//a[@class='menu' and contains(@onclick,'toggleswitch(this)') and contains(.,'12FDEW01') and contains(@href,'javascript')]

如果仍存在问题,请使用JavascriptExecutor。它将直接通过JS运作。它应该工作。我给出了一个使用JavascriptExecutor

单击任何元素的示例

代码应如下所示: -

element=driver.find_element_by_xpath('//a[@class='menu' and contains(@onclick,'toggleswitch(this)') and contains(.,'12FDEW01') and contains(@href,'javascript')]') 
driver.execute_script("arguments[0].click();", element)

将您的Xpath创建为对象,然后传递数组值,如下所示: -

(//a[@class='menu' and contains(@onclick,'toggleswitch(this)') and contains(.,'12FDEW01') and contains(@href,'javascript')])[1]

根据需要更改数组1或2的值

希望它会对你有所帮助:)。