Python selenium - modifying the source code of a webpage

前端 未结 3 1599
暗喜
暗喜 2021-02-10 06:15

I am using Python selenium to automate my attendance entry. It was working fine, now I wanted to try by modifying the source code. I have seen few posts stating that it can be m

相关标签:
3条回答
  • 2021-02-10 06:36

    The problem is that execute_script executes JavaScript inside the browser [1], which knows nothing about python variables in python script. In particuar input_list is not defined for JavaScript, since it's a python variable.

    To fix this, you can select the element inside the JavaScript file. To do this, you can set your cmd to something like this [2]:

        function getElementByXpath(path) {
          return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
        }
    
        getElementByXpath("/html/body/div[3]/div/div[2]/form/table/tbody/tr[2]/td[3]/select/option[1]").value = '2016-09-07';
    <html>
      <body>
        <div></div>
        <div></div>
        <div>
          <div>
            <div></div>
            <div>
              <form>
                <table>
                  <tbody>
                    <tr></tr>
                    <tr>
                      <td></td>
                      <td></td>
                      <td>
                        <select name="date1">
                          <option value="2016-09-17">2016-09-17</option>
                          <option value="2016-09-16">2016-09-16</option>
                          <option value="2016-09-14">2016-09-14</option>
                        </select>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </form>
            </div>
          </div>
        </div>
        

    [1] https://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.execute_script

    [2] Is there a way to get element by Xpath using JavaScript in Selenium WebDriver?

    0 讨论(0)
  • 2021-02-10 06:38

    Try following solution and let me know if any issues occurs:

    driver.execute_script("""document.querySelector("select[name='date1'] option").value="2016-09-07";""")
    

    P.S. I advise you not to use absolute XPath in your selectors, but relative instead

    0 讨论(0)
  • 2021-02-10 06:52

    in python use this :

    element = driver.find_element_by_id("some-random-number")
    driver.execute_script("arguments[0].innerText = 'change text'", element)
    
    0 讨论(0)
提交回复
热议问题