[英]How do I click a Javascript button on a webpage using python selenium
[英]How to click on Javascript link in dynamic webpage using Selenium in Python?
我正在尝试浏览这个动态网页。 由于网站不是static,我只好用selenium。 在链接中,如果我们 go 到“目录”选项卡,然后“选择区域”,然后“选择城市”,然后单击出现的其中一个分支名称,我们可以看到它的地址。
我想最终提取所有省份所有城市的所有地址并将它们复制到一个文件中; 但现在,我只是想 select 下拉列表中的第一个值,然后单击其中一个地址。 到目前为止,这是我的代码:
from selenium.webdriver.support.ui import Select
from selenium.webdriver import Chrome
import time
webdriver = r"path\to\chromedriver.exe"
driver = Chrome(webdriver)
driver.get('https://www.prulifeuk.com.ph/en/location-finder/')
# Click on the Directory tab
directory = driver.find_element_by_link_text("Directory")
directory.click()
time.sleep(1) # Wait 1 sec
'''
will write for loop later to loop through all territories
'''
# Select territory from dropdown
territory = Select(driver.find_element_by_id('territory'))
territory.select_by_index(2)
time.sleep(1)
'''
will write for loop later to loop through all cities in each territory
'''
# Selct city from dropdown
city = Select(driver.find_element_by_id('city'))
city.select_by_index(1)
time.sleep(1)
'''
will write for loop later to click through all offices in each city
'''
# Click on office
office = driver.find_element_by_xpath('//*[@id="map-list"]/a[1]/div/div[1]/h5')
office.click()
time.sleep(1)
该代码最多可以从 2 个下拉列表中选择值。 但是点击办公室的最后一个块不起作用。 这是我得到的错误:
---------------------------------------------------------------------------
ElementClickInterceptedException Traceback (most recent call last)
<ipython-input-5-7c39aa1b8728> in <module>()
37 # Click on office
38 office = driver.find_element_by_xpath('//*[@id="map-list"]/a[1]/div/div[1]/h5')
---> 39 office.click()
40 time.sleep(1)
c:\users\h473\appdata\local\programs\python\python35\lib\site-packages\selenium\webdriver\remote\webelement.py in click(self)
78 def click(self):
79 """Clicks the element."""
---> 80 self._execute(Command.CLICK_ELEMENT)
81
82 def submit(self):
c:\users\h473\appdata\local\programs\python\python35\lib\site-packages\selenium\webdriver\remote\webelement.py in _execute(self, command, params)
631 params = {}
632 params['id'] = self._id
--> 633 return self._parent.execute(command, params)
634
635 def find_element(self, by=By.ID, value=None):
c:\users\h473\appdata\local\programs\python\python35\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params)
319 response = self.command_executor.execute(driver_command, params)
320 if response:
--> 321 self.error_handler.check_response(response)
322 response['value'] = self._unwrap_value(
323 response.get('value', None))
c:\users\h473\appdata\local\programs\python\python35\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response)
240 alert_text = value['alert'].get('text')
241 raise exception_class(message, screen, stacktrace, alert_text)
--> 242 raise exception_class(message, screen, stacktrace)
243
244 def _value_or_default(self, obj, key, default):
ElementClickInterceptedException: Message: element click intercepted: Element <h5 class="iconLink d-block">...</h5> is not clickable at point (284, 515). Other element would receive the click: <div class="group-copy-cookie-bar">...</div>
(Session info: chrome=77.0.3865.120)
我怎样才能让它点击动态链接来显示地址文本?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.