python - select_by_value - Selenium Webdriver encuentra un elemento en un subelemento
switch_to selenium python (2)
Cuando comienza su expresión XPath con //
, busca desde la raíz del documento ignorando su elemento principal. Deberías anteponer la expresión con .
element2 = driver.find_element_by_xpath("//div[@title=''div2'']")
element2.find_element_by_xpath(".//p[@class=''test'']").text
Estoy intentando buscar un elemento en un subelemento con Selenio (Versión 2.28.0), pero el selenio des no parece limitar su búsqueda al subelemento. ¿Estoy haciendo esto mal o hay una manera de usar element.find para buscar un subelemento?
Por ejemplo, creé una página web de prueba simple con este código:
<!DOCTYPE html>
<html>
<body>
<div class=div title=div1>
<h1>My First Heading</h1>
<p class=''test''>My first paragraph.</p>
</div>
<div class=div title=div2>
<h1>My Second Heading</h1>
<p class=''test''>My second paragraph.</p>
</div>
<div class=div title=div3>
<h1>My Third Heading</h1>
<p class=''test''>My third paragraph.</p>
</div>
</body>
</html>
Mi código python (Versión 2.6) se ve así:
from selenium import webdriver
driver = webdriver.Firefox()
# Open the test page with this instance of Firefox
# element2 gets the second division as a web element
element2 = driver.find_element_by_xpath("//div[@title=''div2'']")
# Search second division for a paragraph with a class of ''test'' and print the content
print element2.find_element_by_xpath("//p[@class=''test'']").text
# expected output: "My second paragraph."
# actual output: "My first paragraph."
Si corro:
print element2.get_attribute(''innerHTML'')
Devuelve el html de la segunda división. Entonces el selenio no está limitando su búsqueda a element2.
Me gustaría poder encontrar un subelemento de element2. Esta publicación sugiere que mi código debería funcionar. Selenium WebDriver tiene acceso a un elemento secundario, pero su problema fue causado por un problema de tiempo de espera.
¿Alguien puede ayudarme a entender lo que está sucediendo aquí?
Use lo siguiente:
element2 = driver.find_element_by_cssselector("css=div[title=''div2'']")
element2.find_element_by_cssselector("p[@class=''test'']").text
Por favor, avíseme si tiene algún problema.