Это сообщение об ошибке ...
NameError: name 'btn' is not defined
... подразумевает, что вы пытались использовать переменную btn , которая не была определена в вашей программе.
В соответствии с предоставленным вами HTML-кодом:
<button class="btn btn-white btn--no-margin btn--full-width _1XvaFLD3_IpAQNG-OJU2-H _1xNlj_ScH8hEMWzrkRt1A">Sign up</button>
Ваши испытания кода проходили в правильном направлении.Но выражение:
button = wd.find_element(By.XPATH("//button[contains(text(),'"+btn-white+"')]"))
... указывает, что btn-white
- это переменная, которая, возможно, вы на самом деле не имели в виду и не определены в вашей программе.Следовательно, вы должны были видеть ошибку как:
NameError: name 'btn-white' is not defined
Подобный случай имел место для ошибки:
NameError: name 'btn' is not defined
Решение
Таким образом, эффективное решение будет использоватьлюбой из следующих Стратегий Локатора :
xpath :
button = wd.find_element(By.XPATH("//button[contains(@class,'btn-white') and text()='Sign up']"))
xpath :
button = wd.find_element(By.XPATH("//button[contains(@class,'btn--no-margin') and text()='Sign up']"))
xpath :
button = wd.find_element(By.XPATH("//button[contains(@class,'btn--full-width') and text()='Sign up']"))
xpath :
button = wd.find_element(By.XPATH("//button[contains(@class,'btn--full-width') and contains(@class,'btn--no-margin')][text()='Sign up']"))