我应该如何在 Python 中使用这个 onclick(javascript)
How should I use this onclick(javascript) in Python
我是第一次在这里提问,我是 Python 的新手。
我安装了 mechanize 和 BeautifulSoup 来更改页面中的一些表格。
现在,我使用br.submit()
发送请求,它不起作用!
有什么方法可以调用onclick
函数(javascript)?
这里是关于那个按钮发送数据的代码:
<div class="go_btm w_a1">
<p class="gogo"><a href="#" onclick="javascript:checkdata(document.mainform);" onkeypress="checkdata(document.mainform);">search</a></p>
<p class="gogo"><a href="#" onclick="reset();" onkeypress="reset();">cancel</a></p>
<br class="CLEAR" />
</div>
更新:
感谢您对Selenium这个工具的支持。
但是我还有一个问题。我的代码如下:
for i in range(len(all_options)):
arr.append(all_options[i])
count = 0
for option in arr:
print("Value is: %s" % option.get_attribute("value"))
if count > 1:
option.click()
string = u'search'
link2 = browser.find_element_by_link_text(string.encode('utf8'))
response = link2.click()
browser.back()
count = count + 1
回到同一页面后,它回答我:
Traceback (most recent call last):
File "C:\Users\pc2\Desktop\TEST.py", line 44, in <module>
print("Value is: %s" % option.get_attribute("value"))
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 93, in get_attribute
resp = self._execute(Command.GET_ELEMENT_ATTRIBUTE, {'name': name})
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 385, in _execute
return self._parent.execute(command, params)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 173, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 166, in check_response
raise exception_class(message, screen, stacktrace)
StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
(Session info: chrome=40.0.2214.111)
(Driver info: chromedriver=2.9.248315,platform=Windows NT 6.1 SP1 x86_64)
我只能点击一次select。
那是说我在数组中的选项消失了吗?
我应该如何保持变量(选项)让下一个循环点击?
mechanize
无法处理 javascript:
- How do I use Mechanize to process JavaScript?
相反,您可以通过 selenium
自动化真正的浏览器。示例:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('myurl')
link = driver.find_element_by_link_text('search')
link.click()
我是第一次在这里提问,我是 Python 的新手。
我安装了 mechanize 和 BeautifulSoup 来更改页面中的一些表格。
现在,我使用br.submit()
发送请求,它不起作用!
有什么方法可以调用onclick
函数(javascript)?
这里是关于那个按钮发送数据的代码:
<div class="go_btm w_a1">
<p class="gogo"><a href="#" onclick="javascript:checkdata(document.mainform);" onkeypress="checkdata(document.mainform);">search</a></p>
<p class="gogo"><a href="#" onclick="reset();" onkeypress="reset();">cancel</a></p>
<br class="CLEAR" />
</div>
更新:
感谢您对Selenium这个工具的支持。
但是我还有一个问题。我的代码如下:
for i in range(len(all_options)):
arr.append(all_options[i])
count = 0
for option in arr:
print("Value is: %s" % option.get_attribute("value"))
if count > 1:
option.click()
string = u'search'
link2 = browser.find_element_by_link_text(string.encode('utf8'))
response = link2.click()
browser.back()
count = count + 1
回到同一页面后,它回答我:
Traceback (most recent call last):
File "C:\Users\pc2\Desktop\TEST.py", line 44, in <module>
print("Value is: %s" % option.get_attribute("value"))
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 93, in get_attribute
resp = self._execute(Command.GET_ELEMENT_ATTRIBUTE, {'name': name})
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 385, in _execute
return self._parent.execute(command, params)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 173, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 166, in check_response
raise exception_class(message, screen, stacktrace)
StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
(Session info: chrome=40.0.2214.111)
(Driver info: chromedriver=2.9.248315,platform=Windows NT 6.1 SP1 x86_64)
我只能点击一次select。
那是说我在数组中的选项消失了吗?
我应该如何保持变量(选项)让下一个循环点击?
mechanize
无法处理 javascript:
- How do I use Mechanize to process JavaScript?
相反,您可以通过 selenium
自动化真正的浏览器。示例:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('myurl')
link = driver.find_element_by_link_text('search')
link.click()