Поскольку в HTML присутствует iframe, вам нужно сначала переключиться на iframe, а затем нажать на элемент, вы можете включить iframe следующим образом:
driver.switch_to.frame(driver.find_element_by_tag_name('iframe'))
И затем вы можете нажатьв раскрывающемся меню с помощью xpath:
driver.find_element_by_xpath("//input[@placeholder='Search for address']").click()
И затем вы можете выбрать значение, например:
driver.find_element_by_xpath("//button[text()='Address 1']").click()
Обновленный ответ после обсуждения с OP:
Раскрывающиеся значения отображаются в пользовательском интерфейсе авансом, и iframe также отсутствует над html, поэтому вам не нужно нажимать на выпадающий список или переключаться на iframe, поэтому вам просто нужно использовать следующую строкукод, и он будет работать:
def page_is_loaded(driver):
return driver.find_element_by_tag_name("body") != None
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.uswitch.com/gas-electricity/")
wait = ui.WebDriverWait(driver, 10)
wait.until(page_is_loaded)
search_form = driver.find_element_by_id('input-postcode')
search_form.send_keys('SW7 2BX')
wait = ui.WebDriverWait(driver, 10)
driver.find_element_by_xpath("//*[contains(text(),'Compare energy deals now')]").click()
wait = ui.WebDriverWait(driver, 20)
driver.find_element_by_xpath("(//ul[contains(@class,'address-select')]//button)[1]").click()
Код в Java: (после обсуждения с OP)
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "path to chromedriver");
WebDriver driver = new ChromeDriver();
driver.get("https://www.uswitch.com/gas-electricity/");
driver.findElement(By.id("input-postcode")).click();
Thread.sleep(1000);
driver.findElement(By.id("input-postcode")).sendKeys("SW7 2BX");
Thread.sleep(5000);
driver.findElement(By.xpath("//*[contains(text(),'Compare energy deals now')]")).click();
Thread.sleep(5000);
driver.findElement(By.xpath("//button[text()='Imperial College, Department Of Mechanical Engineering, Exhibition Road, London, SW7 2BX']")).click();
}