Ste*_*n G 3 python selenium web-scraping selenium-webdriver
我对 selenium 很陌生,我正试图弄清楚如何模拟 onclick
这是我在检查 html 源代码时在源代码中看到的内容
<a href="#" onclick="document.getElementById('pN').selectedIndex = 0;document.getElementById('optionList').submit();return false"> <img src="images/ListingOptionSearch.jpg" onmouseover="this.src='images/ListingOptionSearchHover.jpg'" onmouseout="this.src='images/ListingOptionSearch.jpg'"> </a>
Run Code Online (Sandbox Code Playgroud)
我试过 :
driver.find_element_by_css_selector("a[onlick*=document.getElementById('pN')
.selectedIndex]").click()
Run Code Online (Sandbox Code Playgroud)
但我得到一个 InvalidSelectorException
任何的想法?
谢谢!
您可以使用
from selenium import webdriver
browser = webdriver.Chrome(somepath) # You should know what this does.
browser.execute_script("document.getElementById('pN').selectedIndex = 0;document.getElementById('optionList').submit();return false")
Run Code Online (Sandbox Code Playgroud)
这意味着您只需使用 .execute_script 就可以执行 Javascript 代码,真棒,对吧?
无效InvalidSelectorException是在没有元素或经验时引发的期望,可能存在 iframe,您必须使用.switch_to.frame它才能与之交互。此外,我喜欢使用 XPath(始终是最可靠的),需要一点时间来习惯,但经过一两个小时的练习,您就可以掌握它。
JeffC 有一个很好的观点,HTML、JS 的结构可以随时改变。您可以使用 ,find_element_by_xpath(xpath).click()但也有更动态的方法来预测结构是否会发生变化,使用类似find_element_by_name或其他可用的东西:
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6585 次 |
| 最近记录: |