Невозможно щелкнуть переключатель с помощью селена Webdriver в Python - PullRequest
0 голосов
/ 08 июля 2019

У меня проблема с переключением радиокнопок для зарегистрированных проектов на этом сайте . Он не щелкает моим кодом в селеновом вебдрайвере.

import urllib.request
from bs4 import BeautifulSoup
import os
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
url = 'https://maharerait.mahaonline.gov.in'
chrome_path = r'C:/Users/User/AppData/Local/Programs/Python/Python36/Scripts/chromedriver.exe'

driver = webdriver.Chrome(executable_path=chrome_path)
driver.implicitly_wait(10)
driver.get(url)
soup=BeautifulSoup(driver.page_source, 'lxml')
link =driver.find_element_by_link_text("Search Project Details")
link.click()
driver.find_element_by_id("Promoter").click()

Ответы [ 3 ]

0 голосов
/ 08 июля 2019

WebDriverWait - Явное ожидание - это код, который вы определили для ожидания определенного условия, прежде чем продолжить работу в коде.

import urllib.request
from bs4 import BeautifulSoup
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = 'https://maharerait.mahaonline.gov.in'
chrome_path = r'C:/Users/User/AppData/Local/Programs/Python/Python36/Scripts/chromedriver.exe'
driver =  webdriver.Chrome(executable_path=chrome_path)
driver.get(url)

links = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME,\
                "search-pro-details")))

#Click on Search Project Details link
links.find_element_by_link_text("Search Project Details").click()

promoter_radio_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID,\
                "Promoter")))

#select radio button
promoter_radio_button.send_keys(Keys.SPACE)
0 голосов
/ 08 июля 2019

Используйте WebDriverWait и java Scripts Executor, чтобы щелкнуть по радиокнопке Registered Project.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = 'https://maharerait.mahaonline.gov.in'
chrome_path = r'C:/Users/User/AppData/Local/Programs/Python/Python36/Scripts/chromedriver.exe'
driver = webdriver.Chrome(executable_path=chrome_path)
driver.get(url)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='search-pro-details']//a[contains(.,'Search Project Details')]"))).click()
Registered_Project_radio= WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID,"Promoter")))
driver.execute_script("arguments[0].click();",Registered_Project_radio)

Снимок браузера:

enter image description here

0 голосов
/ 08 июля 2019

Попробуйте использовать это:

driver.get('https://maharerait.mahaonline.gov.in')
link =driver.find_element_by_link_text("Search Project Details")
link.click()
time.sleep(2)
radio_btn = driver.find_element_by_id("Promoter")
radio_btn.click()
time.sleep(5)
driver.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...