switch_to_frame switch_to select_by_value functions python selenium selenium-webdriver

switch_to - ¿Cómo puedo encontrar un elemento que contenga texto específico en Selenium Webdriver(Python)?



use selenium python (5)

Prueba esto. Es muy fácil:

driver.getPageSource().contains("text to search");

Esto realmente funcionó para mí en el controlador web de selenio.

Estoy intentando probar una interfaz de JavaScript complicada con Selenium (usando la interfaz de Python, y en varios navegadores). Tengo varios botones del formulario:

<div>My Button</div>

Me gustaría poder buscar botones basados ​​en "Mi botón" (o coincidencias parciales que no distinguen entre mayúsculas y minúsculas, como "mi botón" o "botón")

Estoy encontrando esto increíblemente difícil, en la medida en que siento que me falta algo obvio. Lo mejor que tengo hasta ahora es:

driver.find_elements_by_xpath(''//div[contains(text(), "'' + text + ''")]'')

Sin embargo, esto es sensible a mayúsculas y minúsculas. La otra cosa que he intentado es iterar a través de todos los divs en la página y verificar la propiedad de element.text. Sin embargo, cada vez que obtiene una situación del formulario:

<div class="outer"><div class="inner">My Button</div></div>

div.outer también tiene "Mi botón" como texto. Para arreglar ESO, he intentado ver si div.outer es el padre de div.inner, pero no pude encontrar la manera de hacerlo (element.get_element_by_xpath (''..'') devuelve el elemento primario de un elemento, pero pruebas no iguales a div.outer). Además, iterar a través de todos los elementos en la página parece ser muy lento, al menos usando el controlador de Chrome.

Ideas?

Editar: Esta pregunta salió un poco vaga. Se le preguntó (y contestó) una versión más específica aquí: ¿Cómo obtener el texto de un elemento en Selenium WebDriver (a través de la API de Python) sin incluir el texto del elemento secundario?


Pruebe lo siguiente:

driver.find_elements_by_xpath("//*[contains(text(), ''My Button'')]")


También puede usarlo con el patrón de objeto de página, por ejemplo:

Prueba este código:

@FindBy(xpath = "//*[contains(text(), ''Best Choice'')]") WebElement buttonBestChoice;


podrías probar un xpath como:

''//div[contains(text(), "{0}") and @class="inner"]''.format(text)


wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[contains(text(), ''YourTextHere'')]"))); assertNotNull(driver.findElement(By.xpath("//*[contains(text(), ''YourTextHere'')]"))); String yourButtonName=driver.findElement(By.xpath("//*[contains(text(), ''YourTextHere'')]")).getAttribute("innerText"); assertTrue(yourButtonName.equalsIgnoreCase("YourTextHere"));