The screenshot of inspect code of this web page。我只想动态地单击按钮“搜索”,但是我尝试了很多方法,并且总是存在问题。
我尝试过:
from selenium import webdriver
my_url = 'https://sbs.naic.org/solar-external-lookup/lookup?jurisdiction=AL&searchType=Company&companyStatus=AC'
driver = webdriver.Chrome('D:/chromedriver')
driver.get(my_url)
driver.find_element_by_css_selector(".btn.btn-primary").click()
driver.find_element_by_xpath("//div[@class='btn btn-primary' and @id='submitBtn']").click()
driver.find_element_by_css_selector(".btn.btn-primary").click()
我只是希望我的页面可以单击“搜索”按钮并转到下一页。
答案 0 :(得分:0)
要处理动态元素,请使用WebDriverWait
,然后单击元素。
WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH,'//button[@class="btn btn-primary" and @id="submitBtn"]'))).click()
请使用以下导入执行以上代码。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
让我知道这是否有帮助。
答案 1 :(得分:0)
无法访问website。但是,文本为 Search 的元素似乎是Angular元素,因此对于click()
上的元素,您必须为引入 WebDriverWait 元素可点击,您可以使用以下任一Locator Strategies:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.btn-group[aria-label='Search']>button.btn.btn-primary#submitBtn"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='btn-group' and @aria-label='Search']/button[@class='btn btn-primary' and @id='submitBtn']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
答案 2 :(得分:0)
有时.click()不起作用,我不确定为什么。发生这种情况时,请尝试.send_keys(Keys.ENTER)
我使用Firefox,并在下面的代码中注释了我的geckodriver可执行文件路径。我也在通过id而不是css选择器定位元素。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
my_url = 'https://sbs.naic.org/solar-external-lookup/lookup?jurisdiction=AL&searchType=Company&companyStatus=AC'
driver = webdriver.Chrome('D:/chromedriver')
# driver = webdriver.Firefox(executable_path=r'C:\\Py\\geckodriver.exe');
driver.get(my_url)
click_search = driver.find_element_by_id("submitBtn")
click_search.send_keys(Keys.ENTER)