I am new to python and selenium. Trying to automate download of files from the dropdown menu on the below link for the first time. The code gets stuck after page loads i.e the drop down does not work and gives me an error. Sorry if my code looks clunky. Any help is appreciated.
Thanks
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
import time
s=Service("C:\\python\\chromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.maximize_window()
driver.get('http://www.amfiindia.com/research-information/aum-data/classified-average-aum')
#monthname=driver.find_element(By.XPATH,"//*[#id='AaumDate']")
monthdd=Select(monthname)
monthdd.select_by_value('01-Jan-22')
time.sleep(3)
typename=driver.find_element(By.XPATH,"//*[#id='AumType']")
typedd=Select(typename)
typedd.select_by_visible_text('Scheme category wise')
time.sleep(3)
mfname=driver.find_element(By.XPATH,"//*[#id='AumMFName']")
mfdd=Select(mfname)
mfdd.select_by_visible_text('All')
time.sleep(3)
driver.find_element("class name","sprite-inter go-btn").click()
wait=WebDriverWait(driver,20)
driver.get('http://www.amfiindia.com/research-information/aum-data/classified-average-aum')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#divAumPeriod > span > a > span.ui-button-text"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH,"//*[#class='ui-menu-item']/a[.='January - 2022']"))).click()
Most of these tags open like so and have another list with them that's not using the select tag.
Imports:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
Related
First off - no experience with Python, Sublime Text or Selenium - please be kind..
I am having an issue building a scraper in Python - using Sublime text, Selenium and Chrome. I have updated to the latest Python, Pip and downloaded the correct Chrome Driver. The webpage pops up fine, but get errors.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
#from selenium.webdriver.common.ui import WebDriverWait - commented out due to error
#from selenium.webdriver.common import expected_conditions as EC - commented out due to error
import time
driver = webdriver.Chrome("C:\Program Files (x86)\chromedriver.exe")
driver.get ("https://www.royalcaribbean.com/account/cruise-planner/category/pt_beverage/product/3222?bookingId=1429192&shipCode=NV&sailDate=20220907")
print(driver.find_element(by=By.CLASS_NAME, value='ng-tns-c210-4 text-promo-1').text)***
wait = WebDriverWait(driver, 20)
driver.get("https://www.royalcaribbean.com/account/cruise-planner/category/pt_beverage/product/3222?bookingId=1429192&shipCode=NV&sailDate=20220907")
elem=wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.ng-tns-c210-4.text-promo-1')))
print(elem.text)
Your class name is actually multiple class names so using css selector.
Outputs:
$80.99
Imports:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
I am writing code to automate the searching of a hotel room, with specific check-in and check-out dates, and the number of people. I'm doing this on Trivago, but am having trouble interacting with the datepicker element on the site.
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import ElementNotVisibleException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
trivagourl = 'https://www.trivago.co.uk/'
browser = webdriver.Chrome(r"C:\\Users\\conor\\Desktop\\diss\\chromedriver.exe")
browser.get(trivagourl)
time.sleep(2)
trivagosearch = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[#id="querytext"]')))
trivagosearch.send_keys('mayflower london')
trivagosearch.send_keys(Keys.ENTER)
This code works for entering a destination name and hitting enter, which takes the user to the datepicker element, but because it's not a data input field in HTML I'm not sure how to automate it.
I am trying to get some data from this website link
This is my code:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Edge("C:/Users/Hamita/Documents/msedgedriver.exe")
driver.get("https://www.bountou1x2.com/sport.jsp?ispt=null")
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//*[#id=\"iframe-alto-sinistra\"]")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//*[#id=\"left-menu-container\"]/div[1]/div[1]"))).click()
But it's giving me this error:
selenium.common.exceptions.TimeoutException
The button i want to click is to select Today, it's located in the left side
Help is appreciated, thanks to all of you
The <iframe> you are trying to switch to is located by the following ID receiver
So you should use:
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"receiver")))
instead of
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//*[#id=\"iframe-alto-sinistra\"]")))
This is my first selenium project and I am trying to submit this form:
https://docs.google.com/forms/d/e/1FAIpQLSdwD1y2eBOoJ-hvk97wDGptfI9oYga8SqtUz7u3nrFbWM7hxw/viewform
I succeeded clicking Multiple choice and Checkboxes but I cant select the Drop down. I tried following with no success. All pointers are welcome:
import os
import requests
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
from selenium.webdriver.common.action_chains import ActionChains
driver=webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.get("https://docs.google.com/forms/d/e/1FAIpQLSdwD1y2eBOoJ-hvk97wDGptfI9oYga8SqtUz7u3nrFbWM7hxw/viewform")
multiFirst = driver.find_element_by_xpath("//*[#id=\"i5\"]/div[3]/div")
multiFirst.click()
checkBocSecond = driver.find_element_by_xpath("//*[#id=\"i22\"]/div[2]")
checkBocSecond.click()
dropdownThird = driver.find_element_by_xpath("//*[#id=\"mG61Hd\"]/div[2]/div/div[2]/div[3]/div/div/div[2]/div/div[2]/div[5]")
ActionChains(driver).move_to_element(dropdownThird).click(dropdownThird).perform()
dropdownThird = driver.find_element_by_xpath(
'(//span[#class="quantumWizMenuPaperselectContent exportContent"])[1]')
dropdownThird.click()
WebDriverWait(driver, 5000).until(EC.presence_of_element_located(
(By.XPATH, '(//*[#jscontroller="liFoG"]//*[contains(text(),"Option 1")])[2]'))).click()
your locator is incorrect use above locator
you have to import:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
Selenium provides Select method for selecting drop downs.
from selenium.webdriver.support.select import Select
selection =Select(driver.find_element_by_xpath("yourXPATH"))
3 ways to select
select_by_index
selection.select_by_index(yourIndex)
It selects by index starting from 0 to end of your drop-down.
select_by_visible_text
selection.select_by_visible_text('yourText')
It uses the text inside the drop down.
select_by_value
selection.select_by_value('Value')
It uses the value attribute of drop-down list.
I am attempting to make a auto script bot that find a specific item and adds the item to the users cart and so forth. Right now I am caught up getting python to select the size from the dropdown menu.
I also went with the WebDriverWait function because it was giving me a element not found error , so i assumed it the 'size' element had not loaded yet.
Python is also throwing me this error
"TypeError: 'str' object is not callable"
Below is also a picture of the html code I am referencing to pull the information from. Also will appreciate any advice on better executions.
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# Open chrome web browswer and directs to supreme.com
browser = webdriver.Chrome()
browser.get('http://www.supremenewyork.com/shop/all')
#Find specific item
browser.find_element_by_xpath('//*
[#id="container"]/article[14]/div/a/img').click()
#Wait for element to load
pause = WebDriverWait(browser,10).until(
EC.visibility_of_any_elements_located(By.ID('size'))
)
# Select size
Select = Select(browser.find_element_by_id('size'))
Select.select_by_visible_text("Large")
Try below code.
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
browser.get('http://www.supremenewyork.com/shop/all')
browser.find_element_by_xpath('//*[#id="container"]/article[12]/div/a/img').click()
WebDriverWait(browser,10).until(EC.visibility_of_any_elements_located((By.ID,'size')))
select = Select(browser.find_element_by_id('size'))
select.select_by_visible_text("Medium")