Selenium Automation "Unable to locate element" error on the web UI of qbittorrent application

Viewed 65

I am trying to automate downloading of movies with magnet links using the BitTorrent web UI. I can click on the 'add torrent link' button and the popup does appear but after that, the code fails as it is unable to find the element where the torrent link needs to be added. The same problem occurs when I try to input the file location. I tried time.sleep but had no luck.

My code snippet:

def torrent(path, n):
    #link to web UI
    driver.get("http://127.0.0.1:8080/")
    #default login credentials
    username = driver.find_element_by_xpath("//*[@id='username']")
    username.send_keys("admin")
    password = driver.find_element_by_xpath("//*[@id='password']")
    password.send_keys("adminadmin")
    time.sleep(2)
    driver.find_element_by_xpath("//*[@id='login']").click()
    time.sleep(2)
    #the elements I am trying to find
    driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[2]/a[1]").click()
    time.sleep(5)
    location = driver.find_element_by_xpath("/html/body/form/div/fieldset/table/tbody/tr[2]/td[2]")
    location.send_keys(path)
    input = driver.find_element_by_xpath("/html/body/form/div/textarea")
    i = 0
    while i <= n-1:
        input.send_keys(list_torrent[i])

If you need any other information please let me know. I tried using BitTorrent API already but with no luck. The HTML page has a hidden overflow but it shouldn't be a problem since I am clicking on the elements which should make my code visible. Thanks in advance.

1 Answers

Looks like it is in iframe.

switch to iframe like this :

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH," Ifrmae xpath here"))) 

and then do the other stuff here :

once done with iframe switch it back to default_content like this :

driver.switch_to.default_content()
Related