kaliiiiiiiiii / Selenium-Driverless

undetected Selenium without usage of chromedriver
https://kaliiiiiiiiii.github.io/Selenium-Driverless/
Other
487 stars 61 forks source link

relative find_element fails #260

Closed QuickSliding closed 2 weeks ago

QuickSliding commented 1 month ago
elements = await driver.find_elements(By.CLASS_NAME, 'simple_class')
for element in elements:
    print (await element.text)

Works fine, BUT it's not working when I try to do this:

elements = driver.find_elements(By.CLASS_NAME, 'simple_class')
for element in elements:
    new_element = await element.find_element(By.CLASS_NAME, 'second_class')
    print (await new_element.text)

I'm only getting text from the first object in the list

kaliiiiiiiiii commented 1 month ago

@QuickSliding Please provide some minimum reproducible code

QuickSliding commented 1 month ago

@kaliiiiiiiiii

from selenium_driverless import webdriver
from selenium_driverless.types.by import By
import asyncio

async def main():
    options = webdriver.ChromeOptions()
    async with webdriver.Chrome(options=options) as driver:
        await driver.get("https://kaliiiiiiiiii.github.io/Selenium-Driverless/api/By/", wait_load = True)

        dl_list = await driver.find_elements(By.CSS_SELECTOR, 'dl.py.attribute')
        for dl in dl_list:
            print (await dl.text)

        print ('____________________')
        for dl in dl_list:
            element = await dl.find_element(By.XPATH, "//dl[contains(@class, 'attribute')]")
            print (await element.text)

asyncio.run(main())
kaliiiiiiiiii commented 2 weeks ago

https://stackoverflow.com/questions/59113577/selenium-in-python-finding-an-element-via-relative-xpath Apparently, XPATH expects .// when searching relative smth like

element = await dl.find_element(By.XPATH, './/span[@class="sig-name descname"]')

works just fine

UPDATE: I've added tests for that at https://github.com/kaliiiiiiiiii/Selenium-Driverless/blob/393d03cc7ba2cb3bb247c9f8f1ad4769ef2d5e1c/tests/html/test_relative_find_elem.py,, which also all pass

QuickSliding commented 2 weeks ago

Thanks!