У меня есть код ниже, чтобы настроить ставку на аукционе. Я застрял, когда кнопка подтверждения отключена, пока пользователь не вводит нажатия клавиш в текстовое поле. Я могу заполнить поле, используя selenium.type
, однако это не удаляет отключенный атрибут от кнопки.Как удалить атрибут элемента с помощью JavascriptExecutor и Selenium WD?
Я надеялся, что может быть способ удалить атрибут после завершения команды .type
.
Я искал много страниц, чтобы найти ответ, и я обнаружил, что это возможно, но для жизни меня я не могу заставить его работать.
Может кто-нибудь, пожалуйста, помогите с тем, что я делаю неправильно здесь:
import static org.junit.Assert.*;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;
import static org.hamcrest.Matchers.containsString;
public class Bidder_Home_004 {
private Selenium selenium;
@Before
public void setUp() throws Exception {
selenium = new DefaultSelenium("localhost", 4444, "*chrome", "URL");
selenium.start();
}
@Test
public void testBidder_Home_004() throws Exception {
// Login
selenium.open("/bidderlogin");
selenium.select("id=ContentPlaceHolder1_ddlBidder", "label=A H Biler");
selenium.click("id=ContentPlaceHolder1_btnLogin");
selenium.waitForPageToLoad("30000");
selenium.click("id=hrefCurrent");
selenium.waitForPageToLoad("30000");
Thread.sleep(3000);
// End Login
// Navigate to Home page
selenium.click("//*[@id='hrefCurrent']");
selenium.waitForPageToLoad("30000");
// End Navigate to Home page
// Find Active Tab
String linkHome = selenium.getText("//li[@class='active']");
assertEquals("Igangværende", linkHome);
// End Find Active Tab
// Get Auction ID
selenium.click("//*[@id='spanWait']");
Thread.sleep(3000);
String linkAuctionlist = selenium.getValue("//*[starts-with(@id, 'liAuction')]/@id");
linkAuctionlist = linkAuctionlist.replace("liAuction", "");
// End Get Auction ID
// Get Vehicle ID
String carsinAuction = selenium.getValue("//*[1][contains(@id,'btnBidUp')]/@id");
carsinAuction = carsinAuction.replace("btnBidUp","");
// End Get Vehicle ID
//Find Original Vehicle Value
String OrgVal1 = selenium.getText("//*[@id='bidvalue_"+carsinAuction+"']");
OrgVal1 = OrgVal1.replace("kr. ", "");
OrgVal1 = OrgVal1.replace(".", "");
int OrgVal2 = Integer.parseInt(OrgVal1);
int nextBid = (OrgVal2 + 1500);
// End Find Original Vehicle Value
// Click AutoBid button
selenium.click("//*[@id='btnProxy"+carsinAuction+"']");
Thread.sleep(2000);
selenium.type("//*[@id='txtProxyBid']", ""+nextBid+"");
((JavascriptExecutor)selenium).executeScript("arguments[0].removeAttribute('disabled','disabled')");
selenium.click("//*[@id='btnSubmit']");
Thread.sleep(2000);
// End Click AutoBid button
// Find New Vehicle Value
String NewVal1 = selenium.getText("//*[@id='bidvalue_"+carsinAuction+"']");
NewVal1 = NewVal1.replace("kr. ", "");
NewVal1 = NewVal1.replace(".", "");
int NewVal2 = Integer.parseInt(NewVal1);
// End Find New Vehicle Value
String fileName = new SimpleDateFormat("ddMMyyyy'Autobid.txt'").format(new Date());
PrintWriter writer = new PrintWriter(fileName, "UTF-8");
writer.println(NewVal2);
writer.close();
}
@After
public void tearDown() throws Exception {
selenium.stop();
}
}
Как вы можете увидеть в разделе «Нажмите кнопку AutoBid» У меня есть строка, которая включает в себя JavascriptExecutor
- это линия, Я нашел на других форумах и в stackoverflow, но я еще не получил его на работу.
Когда я исполняю я имею следующие ошибки:
java.lang.ClassCastException: com.thoughtworks.selenium.DefaultSelenium не может быть приведен к org.openqa.selenium.JavascriptExecutor
Как решить эту ошибку?
Вы смешиваете селен 1 & 2 (WebDriver) версию. Определите, какой из них вы хотите использовать (большинство людей предпочтут Webdriver). – xyz
Извините за мой in = gnorance, но можете ли вы указать, где я их смешал? –
Я новичок в автоматизации и думал, что все в порядке, весь код работает правильно, кроме удаляемой «отключенной» части –