如何使用Selenium和Python单击“搜索”按钮?

时间:2019-03-31 05:23:31

标签: selenium selenium-webdriver xpath css-selectors webdriverwait

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()

我只是希望我的页面可以单击“搜索”按钮并转到下一页。

3 个答案:

答案 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)